The result of anything you interpret undefined as is undefined(not defined) and the equality of that value to any other value is also undefined(not defined).
1&2. It may always be true, always be false, and(sic) sometimes be true. The ?u32 you receive has no meaningful value and it is undefined to branch on.
Undefined is not the same as null. There are better explanations, but the way I understand it is that when the variable is set as undefined, the caller must guarantee that it had been set prior to using it.