Unity stores rotation as Quaternions, which are similar to Vector4s. With simple x,y,z rotations (also called Euler angles), you can end up with a problem called Gimbal Locking, which is why we use these seemingly overcomplicated Quaternions.
I won’t bore or confuse you with how quaternions work, but basically the quaternion for the rotation (90, 0, 0) is exactly the same as the quaternion for the rotation (-270, 0, 0) and (450, 0, 0). When Unity sees that quaternion, there is an infinite number of ways it display it to you, so it takes it’s best guess at what you want to see.
Trust me when I say this inconvenience is preferable to Gimbal locking.
However, I don’t know where and when I should use quaternion. Can I use quaternion instead euler angles anytime ?
Secondly, I’m wondering why with RotateAround (the code above) my camera rotate on the Z axis with Mouse X when I rotate my character on the left or on the right. That’s pretty tricky to explain, but basically if I don’t rotate my character the X rotation works well.
Quaternion is the hardset gameobject for Unity in terms of rotation. Using Quaternion.eulerAngles(), returns the quaternion you need for setting rotation based on “normal” angles that we are used to using.
In terms of your second question, I’ve not checked this myself, but wouldn’t you want Transform.Rotate()? Not sure on the exact setup of your game of course. But I usually use Rotate()