Про бесконечные циклы и оператор for... Тут всё зависит от компилятора. Некоторые компиляторы каждый раз проверяют условие, а это основа замедления программ. Циклы - самая медленная часть кода. Если есть необходимость создания бесконечного цикла, от всегда лучше использовать переход. С другой стороны, меня всегда отчитывали за применение таких конструкций, мотивируя это затруднением понимания алгоритма.
Про вызов функции main(), как было замечено пользователем inkblack, это не красивая инструкция. Мало того, замечу, что стандарт запрещает это делать.