Why does adding a bevel mess up a hole? I've been trying different ways to have a beveled edge on this little box and have a hole cut out of it.

I've cut the hole by deleting an existing face created with edge loops, Projecting the Knife, and using a Boolean modifier. No matter what I do it always ends up looking like something ridiculous. If I have too many edge loops the bevel is basically non-existent and if I have too few it doesn't delete the whole face when you press "delete face" (see image below). 

I don't know why this is happening. I've tried positioning different numbers of edge loops in different ways to create a "supporting geometry" but I don't even have a guess about why it's not doing what I expect it to (the hole should be exactly the same with or without the bevel).

How can I get it to have a bevel and be able to cut any kind of hole out of it that I need? Come to think of it when I get this basic rectangle done I'd like to cut some text into it too and that will be even harder.



Here's another screenshot. These diagonal lines appear to either be the problem or to be related to the problem.
By default, the Bevel modifier adds bevels to every edge of your mesh, including all the edge loops and the ones around the hole. That's why it messes up your mesh.

To fix this, simply toggle the limit method of the Bevel modifier to "angle", and adjust the angle threshold, so that only the outer edges are affected. 



Alternatively, you can change the bevel limit method to "weight"; and in edit mode, select certain edges which you want to add bevel to, and adjust their bevel weight in the item tab (press N to bring up the tab if it's hidden). 



The advantage of this method is that you can precisely control where and how much the bevel modifier takes effect. A bevel weight of 1.0 means full depth, and 0.5 bevel weight means half depth, etc.

BTW, your cube mesh currently has unapplied scale transform (its Z scale value isn't 1). This will cause the bevel to appear wider along Z axis. You may want to apply its transform (select the object, Ctrl+A, and apply scale) before applying the bevel modifier.