Consider a bucket (or a beer glass if you prefer). What part makes it useful? The inside of course. The negative space embodies the function of such an object. So why not separate the negative space and with it . . . the functionality. That is the idea of a boolean punch.
Boolean refers to how it is applied, by using a boolean function to add a negative space to an object. It is a punch because a punch is a tool which makes a functional hole (if the cut-out piece is the part you want the tool which makes it is properly called a blanking die).
I have created punches to make anything hang from a drywall screw, glow with LED light, store or conceal an SD card, or function like a switch cover plate. There is a punch posted by poweruser cymon which turns anything into a recorder! Search the thingiverse for the tag “boolean punch” to see some of the options available. If you upload your own please tag them as “boolean punch” so you can add to the collection of modular functions.
It is kind of ironic that in their native form (as positive solid objects) boolean punches are without any function at all. It is only when they are embodied as a negative space that they have utility.
To use one, open your target object in Blender, or a similar program. Import the appropriate boolean punch (or punches). Align the punch with the object making sure it fits they way you want (wireframe view is great for this). The boolean modifier usually works more smoothly if the two objects do not coincide too closely, so it is best to have the back end of the punch protrude slightly from the object. If all goes well you will select the object and take a boolean difference of the punch. But given the nature of booleans and Blender you may need to try a number of options before getting the right one. The punches that I make all have as simple a geometry as possible. This makes them more likely to work right. Lots of curves makes for a beautiful geometry, but are much more challenging to boolean successfully.
As with any boolean in Blender you want to start with as clean model as possible. Remove doubled vertices, recalc normals, and fix any non-manifold issues. This routine solves most blender boolean problems before they start. If you still have problems try adjusting the position of the punch slightly while watching the output of the boolean. Sometimes there is a boundary problem which can be resolved by moving the punch ever so slightly out of the object. As last ditch effort if you are faced with truly nasty geometry which just won’t boolean you can try a remesh modifier, or exporting to netfabb and running a repair.