Thank you! And yes, by 'multiplying vectors' I was thinking of extending or shortening them, not thinking of using cross products here. So this is a visual summary in 5 steps:
When we want to project the grey points from the inner circle on the plane of the outer points and their normals (turqoise),
we aim in the opposite direction facing away from the plane points by subtracting circle point positions from the plane positions (yellow),
create rectangular vectors to the plane normals by calculating a cross product of the aim direction and the plane points normals (red),
and build the cross product of the planes normals and the rectangular directions while adding the planes position (green).
When applying this result to the circle points positions, all points are projected on their targeted planes.
int pt_plane = nearpoint(1, v@P);
vector pos_plane = point(1, 'P', pt_plane);
vector nml_plane = point(1, 'N', pt_plane);
v@dir = v@P - pos_plane; // yellow
v@rect = cross(v@dir, nml_plane); // red
v@proj = cross(nml_plane, v@rect) + pos_plane; // green
v@P = v@proj;
project_on_plane.hiplc