Micah,
Here's a summary of how staticfiles works:
1. You place your static files, which are under version control, in app/static folders, or any directory defined in STATICFILES_DIRS. This is configurable, and works very similarly to how templates are placed in a project. The important thing to note is that your 'source' static files can be scattered among several directories, all of which are under version control.
2. You define STATIC_ROOT, which is the absolute path to some directory on your filesystem where you want the static files to be collected to. STATIC_ROOT would not be under version control, although some developers like to add an empty '_static' folder to version control so you don't have to manually create the STATIC_ROOT folder when deploying the project to a new machine.
3. Running 'collectstatic' collects all of your static files, and copies them to STATIC_ROOT.
4. You configure your production webserver to serve '/static/' (or whatever STATIC_URL is set to) from STATIC_ROOT. If you add staticfiles_urlpatterns to your URL config, the development server will serve your static files if DEBUG=True.
The template context processor django.core.context_processors.static, which provides STATIC_URL, is not deprecated. Feel free to use either that or the template tag.
Hope that helps,
Chris