Authentication backends allow the ability to change what method checks your users credentials.

A great example of this is to create an IMAP authentication backend. Rather than creating a username & password in 2 seperate databases - your Django application and your mail server, you would want to have just the one.

For webservices, ie Facebook authentication, you don't have access to user data. Facebook connect provides you details of the currently authenticated user. But to maintain the login_required decorator or to user request.user you still need to have them logged in using Django. That's where the Authentication Backend comes in.