On the subject of rotation of GameObjects, I noticed three overloaded function transform.Rotate() with the option to rotate on itself in local coordinates or in the world coordinates.

(1) function Rotate (eulerAngles : Vector3, relativeTo : Space = Space.Self) : void

(2) function Rotate (xAngle : float, yAngle : float, zAngle : float, relativeTo : Space = Space.Self) : void

(3) function Rotate (axis : Vector3, angle : float, relativeTo : Space = Space.Self) : void

To rotate the GameObjects incrementally, this is what I should use. I noticed the other types of rotations are not well documented for example the quaternions.

Thanks CSDG

Those 3 functions all look pretty well documented to me. The choice of which one you use depends greatly on how you think about the rotation you are applying. Possibly your number 3 version (rotation about an axis) is the simplest to understand.

Quaternions are not very intuitive to non-mathematicians. What part of the documentation do you think needs improving?

If you want to incrementally rotate a GameObject frame-by-frame, simply use any of the rotation functions applying small rotations. These will accumulate over time. As I said before, this is most easy to understand with the third kind of rotation.