Thanks for the compliments.
Ok, I will see how many of the questions I can answer.
First off, Point Color returns the point3 color value (normalized, if you will, to 0-1 rather than 0-255). It returns this using a Vector data type (point3)
Point Color Gradient returns a direction vector pointing from dark to light (there is no setting to change this, but you can mathematically change it as needed). This is the data necessary to send the particles around as well as up the funnel.
In order to get a continuous rotation around, there needs to be two maps to gather data from. The first map is used if the Point Color data is within a specified threshold and once exceeded (gets too close to the seam) it is sent to the other map (rotated offset to the first map) with a similar threshold. By switching between the two, the particles are constantly in motion.
So the breakdown
The Point Color subOp gathers the color data from Sub Material2 (MatID2) and sends to the pipe to determine which sub Material is being used. If the value is less than or equal to .5, then it uses sub material 2 and if greater, then sub Material3
The first Point Color Gradient is set to subMaterial2, the second to SubMaterial3, both go into the pipe and are sent as according to the Point Color data
The third Point Color Gradient is using sub Material1 which is the gradient used to send the particles up the funnel.
It is essentially that simple, however there is a scalar multiplier (Circum Multiplier) which determines the Radial Pull (to barrow from the Vortex SW). If this is exposed you can get some pretty cool randomization to the radial path. And it can be mathematically adjusted based on distance from geometry to determine speed and get the more central particles moving faster than the ones further away.
I hope this clears up some things.