Here is a quick dirty explanation. If you would like me to go in more detail I will
For AutoCAD to name a few you have
Clone "Shallow Clone" DeepClone DeepCloneObjects WblockClone WblockCloneObjects
The AutoCAD commands like Copy, Mirror, Insert etc....use DeepClone.
Simple rule to be safe always use DeepClone for cloning in same drawing and WblockClone for cloning between different drawings
I get unexpected results when I use the clone method on a "visible" entity because I believe AutoCAD checks to see if it owns any objects and if it does then it uses Deepclone
When you use DeepClone it will check if the object owns an object and if it does it will call DeepClone on that object then check if that object owns an object if so calls deepClone ............. until it reaches objects that do not own an object.
If I use the clone method on a block it will create a copy of the block with no entites in it.
Also deepcloning will handle translation
If copy an object with Xdata it will make sure the Xdata points to the new copy and not the original object
WblockCloneObjects is when you are copying between diffrent databases and will handle if the drawing you are copying to does not have the layer or linetype it makes a copy of that.
Deepclone is for same Database(Drawing) it make sure it points to the correct layer linetype.
There much more detail and steps involved with filing, Mapping, translating,etc...
But I will stop here so hopefully you will not figure out that I do not know what I am talking about.