In general, the differences between copying and versioning are as follows:
Copying is used at a given location to duplicate a menu group or item. Creating copies essentially means that two menu groups or items will exist at a given location. The copy of the original will have all of the same properties as the original, but if you edit the copy it will not affect the original.
Versioning is used for locations within a Master Menu Management group that wish to have location-specific objects for the given location. Having location-specific versions means that group and sub-group versions of the given object are superseded by the location-specific object. In essence, the location sees only the latest, most specific, version of the given object relevant for its location.
Shallow vs. Deep
The concept of shallow vs. deep makes the most sense if you think of things in Toast (Menus > Menu Groups > Items) in terms of a hierarchy.
Creating a shallow copy or version means that you affect only the level at which you want to copy or version, and nothing deeper; whereas creating a deep copy or version means that you are affecting not only the level at which you want to copy or version, but everything deeper, as well.
So, for example, using the hierarchy above, a shallow copy or version of B1 will affect only B1 and all B1-level attributes, and will not directly affect C1 or C2.
Example 1: Bringing it all together - Shallow vs. Deep Copy
If the hierarchy above represents a menu (A), menu groups (B1, B2) and items (C1, C2, C3, C4), a shallow copy of menu group B2 results in the following new hierarchy.
However, a deep copy of menu group B2 results in the following hierarchy.
In general, deep copies of objects is frowned upon, due to the maintenance overhead incurred as a result of the additional objects.
A shallow copy of, say, a drinks menu group will allow you to change the prep stations attached to the new menu group without requiring modification of the prices of the individual drinks themselves.
Example 2: Bringing it all together - Shallow vs. Deep Versioning
As in Example 1, if the hierarchy above represents a menu (A), menu groups (B1, B2) and items (C1, C2, C3, C4), a shallow versioning of menu group B2 results in the following hierarchy.
A deep versioning of menu group B2 results in the following hierarchy.
As can be seen, versioning of the objects does not result in more objects, and just changes the version of the object that is seen by a given location.
So, if, for example, you have different prep station configurations at one location versus another, a shallow versioning is in order. If you would also like to change prices as well as prep station configurations, you would consider deep versioning.