Почему 0 == null // false?
"Значения null и undefined равны == друг другу и не равны чему бы то ни было ещё. Это жёсткое правило буквально прописано в спецификации языка." И.Кантор
Потому что таковы спецификации языка. Вот тут полная таблица: https://dorey.github.io/JavaScript-Equality-Table/
И не дублируйте вопросы, пожалуйста, — читайте спецификации языка, там все есть.