It seems that when I use the boolean modifier it switches the resulting boolean option between difference and union. This can't be normal right?
This can't be normal right?
Funny, it is because of normal(s). Recalculate surface normals with Ctrl+N in editmode. Also make sure the scale of the object is not negative (apply scale Ctrl+A)
Normals specify what is considered outside and what is considered inside of mesh. Booleans take this into account.
Let's simplify the example.
If you want to difference one mesh from another one like the example
Take 2 DIFFERENT MESH and in the first one select the modifier Boolean.
NB BEFORE DOING THAT REMEMBER TO CHECK (could be your problem) that both the meshes have faces not oriented inside. I.E Select first mesh - EDIT MODE - Ctrl+N and then you can use the modfier right
press apply and you did it!