The following code should explain what parts of the expression Range[10] are matching p, q and r:
Range[10] /. {p___, q_,
r_} -> {{"This is p: ", p}, {"This is q: ", q}, {"This is r: ", r}}
This is the output you get:
{{"This is p: ", 1, 2, 3, 4, 5, 6, 7, 8}, {"This is q: ", 9}, {"This is r: ", 10}}
So what is essentially happening with the {#^2 & /@ p, q r} part of the expression is {#^2 & /@ 1, 2, 3, 4, 5, 6, 7, 8, q r} i.e. #^2 is mapped over the single element 1 and therefore gives the result {1, 2, 3, 4, 5, 6, 7, 8, 90}
This would give the expected result:
Range[10] /. {p___, q_, r_} :> Join[#^2 & /@ {p}, {q r}]