In a very basic short, CPUs run processes sequentially, which means that one process must be finished before the next one can start, they are more powerful but slower. GPUs run in parallel, each core can run processes asynchronously, they are very fast when the task can be spread across multiple processors, such as with graphics. Running in parallel usually means that the same task is computed separately on the GPU cores and then all the results are pooled together.
The cluster document is stored in the document that contains the cluster, so if you edit a cluster, it only affects that particular instance, making it a nightmare to maintain a cluster based plugin like Peacock was. On the other hand, if you edit the source document of a Hops component, it will affect all its hops components that reference the same source document, making it like a block of code and opening the door to cloud services like collaborate on definitions and maybe some day running heavy processing tools on powerful computers in the cloud. This also helps to unify RH and GH, since with a definition you can create a component in GH and a command in Rhino.