1 - Вы должны использовать viewDidUnload, чтобы освободить (установите в nil, если это свойство) любой объект, который не нужен при выгрузке представления, например представления, и которые вы снова воссоздаете в viewDidLoad. Пример: вам не нужна метка, когда представление выгружено (нажатием кнопки home), затем вы отпускаете его, а затем создаете его снова, когда представление загружается (приложение запускается).
2 - [супер что-то] вызывает метод суперкласса. Например, если у вас есть класс, являющийся потомком UIViewController, вызов [super viewDidUnload] выполнит код Apple ViewDidUnload UIViewController (который может быть пустым ... или нет).
3 - См. Пример на 1. Но дело в том, что когда вам больше не нужен объект, установите его на ноль, чтобы его можно было освободить, и вы не тратите впустую память.
Дайте мне знать, если я что-то пропустил или есть что-то, чего вы не поняли.
EDIT
Для представлений, которые инициализируются из файла XIB (построителя интерфейса), называемого IBOutlets, вам не нужно делать self.label = nil; потому что UIViewController делает это за вас. Точно так же, как он инициализировал его для вас, он также выпустит его.