Прелоадер можно показывать через комбинацию
onRouteChangeStart и параметра
resolve в route.
То есть в resolve возвращаем Promise, который грузит контент, и RouteChangeSuccess не произойдет, пока Promise не срезолвится. Вот здесь неплохая статья про resolve:
ode2code
Прокрутку можно добавить в событие
onRouteChangeSuccess например. Не очень понятно, что именно вы имеете ввиду под прокруткой, пример был бы очень кстати.
По поводу медленного интернета: имеет смысл упаковать все темплейты в .js файл. Для grunt'а есть вот такая штука:
github. Она собирает темплейты в js файл и засовывает их в templateCache ангуляра. Будет небольшой оверхед при старте, но дополнительной подгрузки при первом использовании темплейта уже не будет.