HoldPattern
has attribute HoldAll
Attributes[HoldPattern]
(* {HoldAll, Protected} *)
So one can use the following injection
Cases[rules, HoldPattern[Alternatives@## -> _] & @@ targets]
(* {a -> 1, b -> 2} *)
P.S. Conceptually, HoldPattern
is here the wrong tool for the job, even if this works. See Leonid's answer.