I recently completed an angular app for a client with great success. I think one of the most challenging parts is deciding how you want to structure your app.
The standard angular structure typically follows:
app
-css
-js
--controllers
--directives
--...
-templates
-lib
-index.html
If your app is going to be big and complicated you will want to follow this structure as close as possible by compressing everything in a static resource. The MavensMate plugin for sublime text makes it easy to uncompress and redeploy your app (see working with resource bundles).
Views:
One caveat is that instead of having an index.html you will probably want to put your root html in a visualforce page. This is where you will bootstrap your app, including your custom js files, css and other resources.
It seems that a lot of developers tend to get rid of the templates folder completely and instead create all their partials html views as separate VF pages. The main reason for this is that it makes routing easier as your top level app will likely be executing at "/apex/youVFpage" and your static resources will be elsewhere. However it is possible to put all partial views in the static resource by leveraging the base header tag.
<base href="{!URLFOR($Resource.MyAngularApp, 'app/')}" />
You can the route your partial views like so:
$routeProvider.when('/', {
templateUrl: 'templates/homeView.html',
controller: 'HomeController'
});
App Data:
Which method you should choose depends on what you're needs are. If you're needs are simple you can get by with Javascript remoting. Otherwise ng-force provides a alot of power and flexibilty that might save you some time. If you want complete control javascript toolkit will allow you to architect your app however you choose.
Other things to consider: