Filename collisions are the thing that bites batch renderers, and from the feature list you are already close to guarding against them. If two jobs differ only on an axis that is not part of the filename template, both write to the same path and the second silently replaces the first, so a six job batch quietly produces four files and nobody notices until review.
The cheap guard is to generate every name up front, check the set for duplicates, and refuse to start while showing the colliding pair, rather than discovering it halfway through a long render.
The other thing worth having is resume. If a batch dies at job five of twelve, a small manifest of completed jobs written beside the output lets the next run skip what already rendered instead of starting the whole combination again.