With regards to angular, most of the time it makes very little difference where you put them. In most web app angular situations, you will have an incredibly small starting page. Most of your actual functionality will be inject later via view or ui-view (if you're using angular ui).
Angular also includes a directive called ng-cloak that will hide your app until the templates have compiled and rendered. This is a nice way to hide the template syntax from the end user until it's ready.
On the topic of placing scripts, the official documentation on Angular says:
Place the script tag at the bottom of the page. Placing script tags at
the end of the page improves app load time because the HTML loading is
not blocked by loading of the angular.js script.
http://docs.angularjs.org/guide/bootstrap
In practice, unless you have a lot of other scripts (jQuery widgets, plugins, etc) that execute immediately, you won't see a performance difference in small apps. If you get to an application with a large enough set of controllers, it won't hurt to place them at the bottom. At that point though, you should really consider a much more proven technique: reduce http requests.
That's a whole other can of worms, but an automated task runner like Grunt could handle minifying and combining your different controller scripts.