Ну, у каждого метода своя цель
1) init
Этот метод предназначен для простой инициализации ViewController, вам не нужно переопределять этот метод, но если вы хотите выполнить некоторую пользовательскую инициализацию ДО того, как загрузятся какие-либо представления, тогда это может быть место для этого. У вас есть разные варианты методов init, вы можете посмотреть в документации на сайте Apple.
2) loadView
этот метод здесь используется для программного создания вашего представления. Если этот метод не переопределен, по умолчанию мы создадим для вас пустое представление, но если это вы, MUSt инициализируете свойство viewController.view, то оно вызывается, когда представление UIViewController помещается в супер-представление.
3) viewDidLoad
этот метод вызывается после того, как вы загрузили представление на экране (после того, как был вызван loadView, и представление помещено в супер-представление или окно). Здесь вы можете добавить подпункты к представлениям контроллеров, а также выполнить другие настройки, которые вы хотите выполнить после загрузки представления. Этот метод работает независимо от создания взгляда из пера или программно.