Is this a reasonable summation of the App/Gui split principle?
Yes.
1) App portion of module must run without Gui portion
Yes. It's functionality might be limited but it must basically work.
2) App portion of module must not link against QtGui
In general yes. For more information see below.
3) App portion must load/save any Document containing module's Objects
It depends. Objects part of the Gui (e.g. view providers) of course cannot be loaded. They will be just ignored when reading a project.
But this isn't something you have to manage, the FreeCAD core system handles this already.
NOTE: if you have a project with Gui objects but load it with the command line interface and then re-save the document the view objects are lost.
4) All object create/modify/delete logic must be in App. (same as #3?)
Not necessarily. In FreeCAD it's everywhere this way that on App a boost signal is emitted (e.g. object creation, change, deletion, ...). The Gui part must then implement the slot functions and connect to these signals.
But again, this is already done in the core system and you have to do this only if you have special purposes.
NOTE: you have to use boost signals/slots. Qt signals/slots cannot be used because in the command line interface (i.e. only App is loaded) there is no running event loop.
5) It is permissible for an App to be of limited use without its Gui
Sure. Isn't it the same as in 1) ?
For context, TechDraw relies heavily on QtGui to produce its drawings and our efforts to produce drawing on the App side without QtGui are moving slowly. So point 5 is a big deal for us!
Ian Rees talked to me about this a few months ago and it's OK for me to link against QtGui in this case to use its capabilities. But you have to consider two points:
1) Make sure that App doesn't offer a GUI (dialogs or the like)
2) You have to be aware of that FreeCAD can be built on a pure server system. You can then either just skip your whole App module from being built or you can structure the code this way that the parts using QtGui are not built.
In this case it's OK to have App with limited functionality.