Sure, in short:
viewer state for interaction, moving a point along a mesh
copy to points with said point and circle and attributes from viewer state
vex:
reproject onto mesh
finding intersections
cleaning up intersections( 3 posibilities, no points, 1 point or two intersection points)
create lines between cleaned up intersections
vex code for those lines: a behind test relative to center point of the circle and center point of intersecting circle
transform circles according to behind tested lines
vex : proximity check to only update points near the live point
vex reproject onto mesh
I've written some vex code to do extrusions, as the polyextrude often creates spikes, still have to implement that.
Also, performance wise, its not bad, but it does slow down quite a bit with a lot of scales. Looking into opencl to speed it up.
That's it in a nutshell