The "positions" of the corners can be found as follows;
distances = Accumulate[EuclideanDistance @@@ Partition[points, 2, 1]];
pos = 1 + n*Most[distances]/Last[distances]
(* {106.556, 176.556} *)
The fractional part can be interpreted as a interpolation between the points with positions {{106}, {107}}
and {{176}, {177}}
respectively. The vertices can be inserted, therefore, between them.
To split the list pts
, maybe this?
lists = {list1, list2, list3} =
pts[[#]] & /@
Rest@FoldList[Span[#[[-1]] + 1, #2] &, {0}, Append[Floor[pos], n + 1]];
gpts = Thread@{{Red, Green, Blue}, Point /@ lists}; (* graphics for pts *)
Graphics[{
gpts,
Black, PointSize@Medium, Point[points[[2 ;; 3]]]}]

For just the first coordinate, change pts[[#]]
to pts[[#, 1]]
.
Alternatively, you can use LineScaledCoordinate
to get the equally spaced points together with points
, in case that is desired:
pts2 = LineScaledCoordinate[points, #] & /@
Union[Range[0., 300]/n, Most[distances]/Last[distances]];
Position[pts2, p_ /; AnyTrue[points, p == # &]]
(* {{1}, {107}, {178}, {303}} *)
Update: If you want the 2nd and 3rd points appended to the ends of the first two segments...
First note I added lists = {list1, list2, list3}
to the original answer above. It's not clear to me whether a list of lists or the separate lists is a better data structure for the actual use case, so I'll show both simulatneously.
Next note that the code correctly splits pts
at points
:
GraphicsRow[
Graphics[{Line[points], PointSize[Large], gpts},
PlotRange -> Outer[Plus, #, {-0.2, 0.2}]] & /@ points[[2 ;; 3]]
]

The easiest way to append a couple of points is to Append
them.
(* append points[[2]], points[[3]] and update the lists *)
lists[[1 ;; 2]] = {list1, list2} =
MapThread[Append, {Most@lists, points[[2 ;; 3]]}];
gpts = Thread@{{Red, Green, Blue}, Point /@ lists}; (* update graphics *)
GraphicsRow[
Graphics[{Line[points], PointSize[Large], gpts},
PlotRange -> Outer[Plus, #, {-0.2, 0.2}]] & /@ points[[2 ;; 3]]
]

Now the OP doesn't show this, but one might want to prepend the endpoint(s) of the (middle) segment(s) as well. For that there's Prepend[]
....