его к нормальной структуре - вынести контроллеры и все, что к ним прилагается, в отдельные папки
Этот шаг несет весьма сомнительную пользу ну да не суть.
ngmin() выдаст файлы в правильном порядке
ngmin делает ровно то же что и ngAnnotate только хуже медленнее и вообще deprecated.
Вообще ангуляру мягко скажем без разницы в каком порядке что там объявлено, можно конечно схлопотать проблем если провайдеры будут в самом низу... но это очень редкий кейс. Все разруливает система модулей ангуляра. В крайнем случае есть gulp-order.
файл с модулем он подключил четвертым или пятым
Если вы используете геттеры для модулей а не переменную:
// плохо
var app = angular.module('app', deps);
// ...
app.service('foo', FooService);
// хорошо
angular.module('app').service('foo', FooService);
то ангуляр опять же все разрулит сам за счет ленивой инициализации модулей.
все равно остались ошибки...
Какие ошибки? Вы их не привели. Гадать тут не умеют.