Though I am not sure why you are seeing the behavior in Manipulate that you indicate (it appears to be a bug but others should chime in) here is an example of an implementation using DynamicModule [I have updated this code from an earlier version which did not work properly]:
Deploy@DynamicModule[{p1 = {0, 0}, p2 = {1, 1}, move = False},
  Panel@Column[
    {Checkbox[Dynamic[move]],
     Graphics[
      {Locator[Dynamic[p1], Enabled -> Dynamic[move]],
       Locator[Dynamic[p2], Enabled -> Dynamic[! move]],
       Dynamic@Line[{p1, p2}]},
      PlotRange -> 1.1,
      Background -> White]}]]
And, if you want this to be within a Manipulate, you can do something like this:
Manipulate[
 Graphics[{
   Locator[Dynamic[p1], Enabled -> move],
   Locator[Dynamic[p2], Enabled -> ! move],
   Line[{p1, p2}]}, PlotRange -> 1.1, Background -> White],
 {{p1, {0, 0}}, ControlType -> None},
 {{p2, {1, 1}}, ControlType -> None},
 {{move, False}, {False, True}}]