That’s not a Quaternion’s fault: rotations are always confusing in a 3D world. A quaternion actually is a rotation of some angle about an arbitrary axis - it’s thus a simple angle-axis rotation, coded in a convenient way (convenient for mathematicians, of course).
In this case, if you want to simply rotate 10 degrees about the local X axis, use Rotate:
leftTail.transform.Rotate(10,0,0);
If you want to rotate about the global X axis, specify Space.World:
leftTail.transform.Rotate(10,0,0, Space.World);
If you want to rotate to the angle (10,0,0), use eulerAngles:
leftTail.transform.eulerAngles = Vector3(10,0,0);
If the leftTail object must be rotated relative to its parent, use localEulerAngles instead:
leftTail.transform.localEulerAngles = Vector3(10,0,0);
NOTE: eulerAngles is actually transform.rotation converted to Euler angles. You can precisely set eulerAngles to any 3-axes rotation you want, but when reading eulerAngles you may get weird and unexpected XYZ combinations at certain quadrants. Due to this, doing things like reading the current euler angles, modifying and writing it back may produce weird results.
@aldonaletto Tried all this and it still doesn't work. :( What may be the problem right now ?!
– SolaMuhammad