First, you have your LIKE requirements.
These filter out all zips that don't start with 1,2 and 3.
This gives all zips that start with 1,2 or 3.
Then, to get the count of those records, you correct;y use count(*).
But, then you also use the GROUP BY, which will 'group' the result by 'zip', giving you one count(*) for each unique value of zip.