Part of this is tied up with understanding the way the variables work. We often talk about how a DATE variable is actually a DOUBLE for which special treatment occurs. This concept is called a TYPECAST - meaning you store something as though it were something else, but then provide special treatment of the "underlying" i.e. base variable, usually related to interpretation or formatting of the variable's value. VBA does this special treatment based on the way the variable was declared. We always recommend Option Explicit for every VBA module because that way, VBA knows when we want special treatment (or, for that matter, ordinary treatment) for each variable. See also the last paragraph, regarding VARIANT variables and how they sneak into your code.
So, your question was about Booleans. Technically, a declared i.e. DIM'd Boolean variable is a typecast of an INTEGER. The special treatment is that when the underlying integer is 0, that equates to the Boolean value FALSE, and when the integer is NOT 0, then it represents TRUE. Yes, that means that one and only one INTEGER value is truly FALSE and all of the other 65535 possible INTEGER values are TRUE. It's a side-effect of being a typecast. Since the Boolean, at its base, is an INTEGER, it initializes like an INTEGER. The VBA default value for a declared INTEGER is 0 but because of the typecast, that value is treated as FALSE. For comparison, VBA DATE variables - being a DOUBLE at base - initialize as 0.0, which is then treated as the "reference date" of midnight, 30-Dec-1899.
That special treatment actually works both ways because you can perform CBOOL(integer) and CINT(Boolean) functions to interconvert them. In the case of IF statements, the IF requires a Boolean value. If you give the IF statement an INTEGER, a process called "LET Coercion" converts integers to Booleans "behind the scenes", thus leading to the IF integer case working smoothly. Using the IF x=y construct, the x=y expression is a relational expression which evaluates to a Boolean internally, so that works properly.
The "fly in the ointment" is when you DON'T use Option Explicit and fail to declare the variable. The default data type for undeclared variables is a VARIANT, and the default value for a VARIANT is NULL. Depending on other settings related to error handling and suppression, that NULL could cause either an "Invalid use of null" error OR the variable could behave as if it were always FALSE. In the worst possible case of error suppression, you would find that the expressions IF a-null-value and IF NOT a-null-value would behave identically. That is because NULL "poisons" any expression containing it.