From the validators documentation:
"After a form has been submitted, Django first checks to see that all the required fields are present and non-empty. For each field that passes that test and if the form submission contained data for that field, all the validators for that field are called in turn"
The first sentence implies that required field checking is a separate step, before any validators are run. The second is what actually appears to happen: is_required check, then validators, for each field in turn.
It might be worth rewording to clarify. Perhaps:
"After a form has been submitted, Django validates each field in turn. First, if the field is required, Django checks that it is present and non-empty. Then, if that test passes and the form submission contained data for that field, all the validators for that field are called in turn."
It would also be worth mentioning that custom validators can't rely on ALL required fields in the form being present when the validator runs: only the field to which the validator is attached.
Alternatively, make is_required checking truly a separate initial step and change the documentation differently...