The best approach in the U.S. (I can't speak for the system in other countries) is to do a bit of both. You want to contact potential mentors and find out if they are accepting students in the next year or two, if their interests really fit with yours, and thus identify the schools where you want to apply. The actual applications go through the program/department, and of course you want to apply to more than one place. You need to apply to multiple places, because you do need to be concerned about the chance you won't be accepted to your first choice. You also want to make sure that any place you apply has people working there who you would potentially consider as a mentor. You may change your mind and find someone else once accepted and doing your rotations, but the key is to know there is at least one or two people there who you could work with and who have positions open in their lab. I've seen students unnecessarily delayed in getting their degrees because the people who they wanted to work with don't have any positions open, so they end up settling for working with someone on a project that doesn't really interest them...inevitably, they flounder on those projects and end up changing labs struggling to find a good fit. So, if you're interested in a particular program, you do want to make contact with the people you'd want to work with and find out if they would be able to take you on as a student in the time-frame with when you'd need to make that decision. Otherwise, look for another program.
When you interview with a department/program, make sure you schedule time to meet with anyone you are really interested in working with and members of their lab. It's not JUST enough to make sure they have openings for students and are doing work that interests you...you also have to make sure your personality will match with the mentor and other members of the lab. These are people you'll see more often than your family during the time of your studies, so you HAVE to be able to get along with them, not just do good work for them.
As for accepting one offer over another, don't sweat it. This is the nature of the beast. People know that students are interviewing them as much as they are interviewing the students, and that a great candidate may have many places to choose from. As Choppy points out, it'll go a long way to contact them and thank them for meeting with you and letting them know you've chosen another program...this way you don't burn bridges in case you later want to do a post-doc with them, or ask them to be your external committee member, or need them as a collaborator, etc.