If you are going to plot A and B over several conditions derived from C, it would probably be worth writing a function that not only takes A, B, and C, but also a list of the conditions expressed as pure functions and does the selection for every function on the list. This is not a very difficult extension of what you already have.
a = {1, 2, 3, 4, 5};
b = {1, 2, 3, 4, 5};
c = {1.1, 2.2, 17, 1.5, 5};
f = {1 <= # <= 3 &, # > 2. &};
pickByC[a_, b_, c_, funcs_] :=
Pick[Transpose[{a, b}], #] & /@ Table[f /@ c, {f, funcs}]
ListPlot[pickByC[a, b, c, f],
PlotMarkers ->
{Graphics[{Red, Disk[{0, 0}, Scaled@.03]}],
Graphics[{Black, Disk[{0, 0}, Scaled@.017]}]}]

Note: because the points from the two sets plotted were both selected from the same underlying data, I took some care to make sure that when one data point was selected twice, the duplication was visible in the plot. If there were a large number of criteria functions, the visibility of multiples could become an significant issue.
Update
As Guess who it is. points out in his comment
pickByC[a_, b_, c_, funcs_] := Table[Pick[Transpose[{a, b}], f /@ c], {f, funcs}]
is a better formulation.
Pick[Transpose[{A, B}], Thread[1 <= C <= 3]] // ListPlot
would work, I guess. $\endgroup$