Boolean Diference not working
Some people will tell you to stay away from booleans because they can be a hassle and seemingly randomly not work, but if you get used to them you'll find out the exact cases where it won't work and can learn to avoid them.

That being said, here's my checklist:


Manifold geometry (in some, very very speciffic cases (maybe for logos or something) you will use booleans on non-manifold geometry), but it is generally considered to be a very bad idea, unless you know exacty what you are doing.
Normals : press the Overlays Options button on the top right and toggle Face Normals if you see any red, go fix it immediately: Tab  into Edit Mode and press A , then Shift + N 
Line-vertex / vertex-vertex intersections: if all else fails, it means you have a vertex exactly on an edge or on top of a vertex, and Blender can't tell what's supposed to be inside or outside. if you are using a literal mesh you should try to move the objects around just slightly, if you are using non-destructive modifier operations, it's always clever to use a prime number of faces on your bevels and screws, this will greatly decrease the chance of such intersections