Copy Rotation in script C#

Hi, Unity Community.
I would like to know if there is any kind of feature like Copy Rotation from another object?
or if there is another way to Copy Rotation and an offset let’s say

This is some values that would be seen on the inspector
    GameObject Transform:
    Rotation: X => 0 ; Y => 45; Z =>0;
    SecondGameObject that would follow the rotation of the GameObject (In the second GameObject I need it with an offset )
    Rotation: X => 0 ; Y => 45; Z =>0;

In the next Script I have the following code written:

    void Update() {
            CopyRotation();
    }

    // Copy Rotation from GameObject
// default(Vector3) like Vector3(0, 0 , 0)
    public void CopyRotation(GameObject Target, Vector3 Offset = default(Vector3))
    {
        /*transform.rotation = Quaternion.Euler(
            Target.transform.localRotation.eulerAngles.x,
            Target.transform.localRotation.eulerAngles.y,
            Target.transform.localRotation.eulerAngles.x
            ); */
       // This is working if I need to copy the Rotation too.
       // transform.rotation = Target.transform.localRotation;
       Offset = Vector3(0 ,10, 0);
       // I need to use the Y rotation starting with 10 degrees
      // But let's say I need the Z axis rotation starting with 10 degrees
      //Offset = Vector3(0 ,0, 10); // is it possible?
       transform.rotation = Target.transform.localRotation + Offset;
    }

so let’s say

This is some values that would be seen on the inspector
    GameObject Transform:
    Rotation: X => 0 ; Y => 45; Z =>0;
    SecondGameObject that would follow the rotation of the GameObject (In the second GameObject I need it with an offset )
    Rotation: X => 0 ; Y => 55; Z =>0;

I am not sure if explained well what idea I want to achieve in this script.

Keep in mind this Script is not working

The next function works very nice, it is like a parent but without following the parent rotation.

// Copy Location from GameObject
    public void CopyPosition(GameObject Target, Vector3 Offset = default(Vector3))
    {
        transform.position = Offset + Target.transform.localPosition;
    }

To achieve something like that with rotation:

 public void CopyPosition(GameObject Target, Vector3 Offset = default(Vector3))
 {
     transform.position = Offset + Target.transform.localPosition;
 }

You can do that:

 public void CopyRotation(GameObject Target, Vector3 Offset = default(Vector3))
 {
     transform.rotation = Quaternion.Euler(Offset) * Target.transform.localRotation;
 }

Quaternion.Euler transform the given euler angles (andles in X, Y, and Z) into a Quaternion rotation.

Also, to “add” 2 Quaternions you should use the “* (multiply)” operator.