Ways to move a character in Unity

I am studying Unity, and so far I encountered three different ways to move a character. As far as I understand:

  • Directly changing the transform – ignores both physics and colliders;
  • Using a CharacterController component – ignores physics but considers colliders;
  • Using a RigidBody component – considers both physics and colliders.

Are these descriptions correct? Which one should I use?