They could always enabled strict_all_tables and things like ignoring NOT NULL and so on will not happen. I will note that Postgres also inserts a default value of NULL (same as MySQL) when no value is given and the column has no default value.
Of course it will, what did you expect? The point is that if you specified NOT NULL and then don't give it a value then it will refuse to let you insert that row BECAUSE IT IS INVALID.
How is that so hard to understand?