Help with Torque/AngularVelocity/BodyGyro/BodyAngularVelocity

How are these 4 different, and in what situation is each of them best to use?

Angles is the rotation equivalent of Position. In that way, Part.AssemblyAngularVelocity is the rotation equivalent of Part.AssemblyLinearVelocity, and Torque is the rotation equivalent of Force.

Torque applies a torque to the parent of Attachment0, causing the Part.AssemblyAngularVelocity to change over time. It causes a kind of “angular acceleration”.

AngularVelocity tries to make the parent of Attachment0 rotate at a specific rate, i.e. have a specific Part.AssemblyAngularVelocity. It does this by applying a torque up to MaxTorque.

A BodyGyro tries to make its parent have a specific orientation. It also applies a Torque up to a MaxTorque, but has some more parameters to control how exactly it applies it.

BodyAngularVelocity is like AngularVelocity, but works on the parent Part and not the Parent of Attachment0. It also has an additional parameter to control exactly how it applies torque.