It seems your description is insufficient since the circle should not just follow the cursor but be transformed according to an intersection point and surface normal.
II suggest you use the code from webgl_decals. To be more precise the code from checkIntersection()
. The idea is to perform simple raycasting and then extract the position and normal data from the intersection point. You can then position AND orient the circle so it looks like in the video.