1. Simple memory dump is memory snapshot that only tells you the size of each class (without the 'tree' that shows you all the parents-reference-child-realtionship kind of thing underneath) [almost no overhead]
2. Extended memory dump is just like simple memory dump, but instead of snapshot it shows you the whole tree during the time this dump is taken [This one definitely has overhead and will likely impact your application]
3. Selcetive memory dump is the dump that is taken only on certain classed, you have to create a memory-sensor beforehand then only you can take a selective memory dump
AFAIK, normally you take a few simple dump to do comparison first, then identify some suspicious classes growing too fast in memory size, then create a memory sensor to instrument memory allocation of those suspicious classes, then from that points onwards use selective dump to further investigate. Follwoing this typical workflow, you don't need to take a full/extended dump in the first place, which might bring your application suspended.
Andi has a great video on this: