The pattern vendorModel_Function constrains the definition to require that the first argument has Head Function. You passed in f1, but that doesn't have Head Function. You can either change your definition for f2 or you can pass in an actual Function. So, here's an alternate that I'll call f3:
f3[vendorModel_, models_] := vendorModel /@ models;
f3[f1, {3, 4}]
(* {10, 17} *)
By leaving vendorModel unconstrained, the function is more flexible.
Or, using your original f2, you could do this:
f2[f1[#] &, {3, 4}]
(* {10, 17} *)