This is provably stupid, since deleting NULL is safe, and not only that, but NULL is the only value that is guaranteed to be safe to delete. Therefore this statement has the precise opposite effect as its intent. Fortunately, I was able to get the policy removed.
This is arguably done by someone who used common logic rather than knowing language features. The person is possibly aware that doing stuff with a NULL pointer tends to make shit crash.
During sometime in their app they conditionally allocate a variable: some_pointer = new some_type();
Using the logic they know, they have to delete whatever they've allocated. Since they could be unaware of whether this was actually allocated or not they use common logic: You cannot delete what doesn't exist. So they simply follow that logic, and checks for some_pointer's validity before removing it.
It's not provably stupid just because people are unaware of language features.
Arguably, as people apparently think, comparing a boolean value to true/false adds readability to your code. If you're used to see comparative operators within if-cases then if(booly) could make you go "huh?", whereas if(booly == true) follows the same pattern as if(x == 5), which is cozy and familiar for some.
I'd believe that compilers have come far enough to optimize this thing out (fact pulled out of my ass, no guaranteed validity), so it just boils down to a matter of code style. This I think that people are free to choose themselves. Although you can make them aware of "== true"'s obvious redundancy.