Creating rule-based sublists

Some options:

Pick[
 lis,
 StringStartsQ[lis[[All, 1]], "a"]
 ]

{{"ab", 2, "c", 3}, {"ac", 5, "f", 6}, {"ad", 9, "c", 10}}

Select[lis, StringStartsQ[First[#], "a"] &]

{{"ab", 2, "c", 3}, {"ac", 5, "f", 6}, {"ad", 9, "c", 10}}

Cases[lis, {_?(StringStartsQ["a"]), ___}]

{{"ab", 2, "c", 3}, {"ac", 5, "f", 6}, {"ad", 9, "c", 10}}


Alternate solutions using string patterns:

Pick[lis, StringMatchQ[lis[[All, 1]], "a" ~~ ___]]

{{"ab", 2, "c", 3}, {"ac", 5, "f", 6}, {"ad", 9, "c", 10}}

Pick[lis, StringCases[lis[[All, 1]], "a" ~~ ___] // Map[Length], 1]

{{"ab", 2, "c", 3}, {"ac", 5, "f", 6}, {"ad", 9, "c", 10}}

Pick[lis, StringPosition[lis[[All, 1]], "a" ~~ ___] // Map[MatrixQ]]

{{"ab", 2, "c", 3}, {"ac", 5, "f", 6}, {"ad", 9, "c", 10}}


A few additional variations:

Pick[lis, StringMatchQ["a*"]@lis[[All, 1]]]

{{"ab", 2, "c", 3}, {"ac", 5, "f", 6}, {"ad", 9, "c", 10}}

Pick[lis, StringTake[lis[[All, 1]], 1], "a"]

{{"ab", 2, "c", 3}, {"ac", 5, "f", 6}, {"ad", 9, "c", 10}}

Pick[lis, Order[#, "b"]& /@ lis[[All, 1]], 1]

{{"ab", 2, "c", 3}, {"ac", 5, "f", 6}, {"ad", 9, "c", 10}}