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}}]