Many thanks, Nasser, for your clear answer.
Im obviously a bit of a noob with Mathematica which is maybe why I got confused. I think another explanation would be to render the desired result without the postfix notation, that is,
ReplaceAll[Product[Sin[aList[[i]]], {i, 1, Length[aList]}], aList -> {1, 1/2}]
which more clearly indicates that Length will be evaluated before ReplaceAll.
Oddly, (or not so oddly once you see the pattern with some of the Mathematica documentation), the ReplaceAll function syntax is not provided in the Mathtematica documentation, only the postfix /. .