I personally don't see the utility in listing out each possible state rather than listing parallel interacting states independently.
In other words, a submitted form either has errors, or it doesn't, and it doesn't matter if it's a from meant to add a new record or edit an existing one. In either case the form's filled with data and error messages which you are intended to edit. Saying "this is a new form", "this is a new form with errors", "this is an edit form", etc seems more confusing than breaking things down to their fundamentals.
The basic steps in the template form builder, exposed by ad_form, are:
1. Build the initial form, with or without existing data.
2. Submit and verify the form, repeating step one and two with the submitted data if there are errors.
3. Do something with the verified data that has been posted, with new_data and edit_data being shortcuts when the database is involved.
Display mode complicates things. Forms which display some fields and allow for entry of others complicates things further. For basic understanding I think both concepts should be avoided in initial documentation and added as "advanced ad_form hacking".