Ну например почему плохо что переменная счётчика цикла for, объявляется внутри него, а не в начале main ()?
Именно так и учат, а не наоборот? Хорошо делать время жизни переменных как можно меньше - это и делает программу понятнее человеку, и упрощает оптимизацию компилятору. То есть переменную лучше объявлять именно в цикле.
По самому вопросу: C - плохой язык для первого изучения и устаревший для индустрии (некоторый спрос есть, в основном для разработки встраеваемого софта, но зарплаты в этой области небольшие).
Но есть старые технологии, которые было бы вполне уместно использовать в образовании - например Scheme (старый SICP - все еще лучший учебник) или язык Fort для низкоуровневого программирования.
А в целом сейчас стоит изучать функциональное программирование, языки с развитыми системами типов и математику.