I added a couple windows to a tower I’m modeling with a Boolean operation. In Shade Flat it looked fine. When I tried Shade Smooth Blender went berserk. Take a look:
“Shade auto smooth” is going to be your friend in your case
As for what is happening: the smooth shading is trying to be calculated from a lowpoly mesh that doesn’t have edge loops around holes which would help it out.
That’s normal ! you’ve discovered the importance of topology. Boolean operations just carve volumes out, but they don’t create support loops or adjust normals. They’re not supposed to be used as-is, you’re always meant to correct topology afterwards. Unless your objects are high-res enough that the resulting mess doesn’t matter too much, but that’s not the case here, as your tower seems pretty low-res. So either you subdivide your tower first, make it all round and beveled and whatnot, and then use boolean on it, or you keep it low-res, then use your boolean, and finally go in edit mode and correct topology to get rid of n-gons, create support loops to help with subdivision, or if you don’t care about subdivision you can just play with a weighted normals modifier, see if it’s enough to even things out.