How to cut out holes nicely, without applying subsurf modifier (in the correct topology order)
The way I would approach this is:
Make the cylinders with as few sides as possible. then add the boolean modifier before the subsurf. And apply it.

Additionally, you should move your surrounding geometry so that it "encompasses" the 3 holes. That way, when you apply the modifier, all the weird lines are going to be in the small space surrounding the holes.
If you can't change your geometry, then try adding a loop cut to do the same thing.
Hope this helps!