Essentially you could create a curve by snapping with points one a two then use the extend curve function to extend along the existing curve direction.. then use that as a to snap to.
Or if you want to be crazy cool about it you could write a python script to handle it given your point selections. Though would invove alot of trig, would be a very useful tool.
Would probably look something like this, where the first two vert selected definte your axis and the rest are the point you want to snap it to, again no language just the rough idea:
selection = points
bounding box size of selection = bbox
bounding box size of selection[0, 1]= bboxCurve
create ep curve from = points, points = snapcurve
max(bbox, bbox, bbox)= axis (pick the largest edge of the bounding box)
scale snapcurve -r [scaler]
for vert in points[2: numpoints]
transform vert (closestPointOnCurve((vertPos),snapcurve)-(vertPos))