Since columns and rows presented may vary for different versions of 'dumpsys', I'll try to provide some generic overview here...
Every application in Android runs in different process that is running instance of its own Dalvik VM.
Native Heap row represents memory used by the process itself (Ex: Native C mallocs).
Dalvik Heap is memory allocated by Dalvik VM (Ex: Variables in your Java Android code).
Dalvik Other is memory used for JIT and GC.
Android may share pages of memory among several processes (Think code of common frameworks). Clean memory is one that hasn't changed since it was allocated or loaded from storage (Code of your application). Dirty memory is space used for computations. Android does not have swap mechanism so Dirty memory is also RAM that will be freed when app exits.
Private Dirty is unshared dirty memory (guess you figured that).
Private Clean is unshared clean memory (and that).
PSS Proportional Set Size: Is a tricky measurement where all private pages contribute 100% of their size and shared memory contribute 'size/(num of processes shared)'. This way if you sum up all PSS for all processes you'll get total memory used.