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[]....
Nearest[pts -> Automatic]is more efficient. – Michael E2 Oct 11 '16 at 18:27Position[newpts, 5]andPosition[newpts, 10]– LCarvalho Oct 12 '16 at 11:25Nearest,{107}, {177}, are points that come just after the nearest vertex (points[[2]], points[[3]resp.). In another configuration, they might come before depending on the nearest point to the vertex. Then the offsets you add,{0, 1}, to getpointsandposwould have to be changed. I doubt that evenNearest[..][p, 2]would bracket the pointp. Think of a tall narrow "W." – Michael E2 Oct 23 '16 at 01:53