With this PR: https://github.com/FreeCAD/FreeCAD/pull/3130
I did more fine-tuning.
The structure is now:
* Page: all objects on a page can be deleted; if the page itself should be deleted, issue a warning if it is not empty (except there is only the template)
* Template: issue a warning because deletion this will break the page, nevertheless allow the deletion if the users insists.
* ProjectionGroup: issue a warning if it is not empty, can be deleted except
- an item can be deleted, except
- an item contains a detail view
- an item contains a section view
- an item contains a leader line
all objects in a ProjectionGroup can be deleted;
* ProjectionGroupItem: can be deleted, except
- it is the anchor of a ProjectionGroup
- it contains a detail view
- it contains a section view
- it contains a leader line
* Part view: can be deleted, except
- it contains a detail view
- it contains a section view
- it contains a leader line
* Leader Line: can be deleted, except it has a weld symbol
* Weld symbol: can be deleted, except it has a tile weld
* other low-level objects like dimensions: they don't need special treatments, you can just delete them, either directly or by deleting their view.