An Application tries to provide a single, relatively
self-contained set of
related functions an classes. An Application can define a set of models (thought it does not have to) and can define and register custom template tags and filters (though, again, it does not have to).
Views, custom manipulators, context processors and most other things can all be either defined at the level of the Project or of the Application, and where the are depends on what is most effective. In general, though, they are best placed inside an Application (this increases their portability across Projects).