For pre-K I would advice inviting ALL the kids in his class. My own pre-K boys don't remember all their friends, say the love playing with someone one day, and says they 'never liked him' the next day (and it turns out the kids wanted to use the same toy or similar).
In addition, some of his class mates he is indifferent towards, but when I talk to the parents they tell me their kid talks about my kid all the time. Friendships can be very onesided at this age.
In the end, inviting everyone is a good thing - it also teaches that you cannot exclude kids, which I personally think is cruel. I want our sons to learn that even people they don't get along with are important and should not be excluded.
I find something like evite very useful for gathering RSVPs, but a note with a phone/email is great too.
As for venue, take a look at some places you are interested in. Many have a range, and a 'party package' is up to a certain amount of kids, usually 20-25. Usually they don't require exact numbers, and you end up paying for the base pack + any possible extras who shows on the day (like $X for up to 20 kids, then $Y per kid) . Usually those places require a deposit.
In my experience, between 50 and 75 percent of invited kids show up to.
You usually have to reserve venues early, and you also have to notify parents early, people usually have lots of stuff going on.
I would say start with figure out how many kids you would invite, remember to count siblings if you think they will show. I find that most kids in the age will usually bring one parent, but sometimes both. Find a venue that can potentially hold most kids & adults, the chances of everyone coming is very low.
Ask for RSVPs and use that to figure out size of cake, amount of food/goodiebags etc.
Know that some will reply yes and not show, kids get sick, have terrible days and so forth.