you should NEVER do a boolean difference on a face. Always do it on an edge. When you cut a hole in that top face, there were no edges to anchor the hole so the geo is messed up. First put an edge across that top face, then do a boolean. You should be fine then.
Good luck m8
Don't be satisfied with what you can do but rather strive to do the things you can't do!