>>106977267
It is pretty simple if you stick with the templates provided (Debian, Fedora, Whonix). From that perspective, you have the following tree of 'types':
StandaloneVM
TemplateVM
....AppVM (normal)
....AppVM (disposable_template)
........DisposableVM
StandaloneVMs are exactly like you'd expect a normal VM to be: you provision an OS (or clone a template and change it to standalone), its writes are not ephemeral and mutates state.
TemplateVMs host all the parts of the root file structure except /home. Any changes to TemplateVMs mutate state, but any writes to /home do not propagate to children.
AppVMs only contain a pointer to a TemplateVM and have their own /home partition to mount. Writes to root are non-persistent while /home persists. Upon creation, the new AppVM's /home is a clone of the initially chosen TemplateVM's /home but is otherwise the AppVM's from then on.
AppVMs with disposable_template enabled are for creating named and anonymous (disp####) DisposableVMs from. A DisposableVM has two pointers: it points to an AppVM (with disposable_template enabled) for root (which points to the TemplateVM) and /home. All of the file system tree in DisposableVMs is ephemeral, no writes will persist to the associated disposable_template AppVMs or TemplateVMs when killed. Perfect for web browsing and for firewalls and such.
S [own root, own home]
T [own root, own home]
..A [T's root, own home initially cloned from T]
..A (dt) [T's root, own home initially cloned from T]
... D [A (dt)'s root aka T's root, A (dt)'s home]