A Manager is the interface through which database query operations are provided to Django models. At least one Manager exists for every model in a Django application.
The way Manager classes work is documented in Making queries; this document specifically touches on model options that customize Manager behavior.
You can use a custom Manager in a particular model by extending the base Manager class and instantiating your custom Manager in your model.
There are two reasons you might want to customize a Manager: to add extra Manager methods, and/or to modify the initial QuerySet the Manager returns.