The bit with `ping 0` is sadly unexplored, as the nature of "any host in network" and "any host in any network" addresses are sadly unmentioned these days.
Then come the joys of debugging someone's configuration because a tutorial told them to "connect to 0.0.0.0" instead of localhost...
As a side note, why wouldn't 0.0.0.0 be a valid address if you have a route for it (just like you can set any public IP, and are not restricted to private ranges)?
I recall setting 192.168.0.0 as a valid address in windows XP a while ago.
I usually find people in the networking are (especially teachers) to quite stubbornly assume that things are always one way, while almost the entirety of networking is comprised of RFCs.
Sure, default configurations help in that you don't have to change a device's configuration, but I see no reason why I couldn't change my MAC, or set my broadcast address to 10.0.0.42, or the broadcast MAC to 01:02:03:04:05:06, and my gateway to 10.0.0.0 while I enjoy browsing the web on my 0.0.0.0-addressed computer...
0.0.0.0 is a valid address. You also have a route for 0.0.0.0/0, usually called "default" :)
Just not valid for a host, as it is a network address where "network" is specified as the whole internet. It's how you create services listening to connections from any address - technically you can setup a listening socket waiting for connections only from specific network, but I haven't tested it.
It's also why minimal compliant IPv4 network has 4 IP addresses: the network address, host 1, host 2, broadcast.
There's an unratified RFC for allowing only host 1 and host 2, but I believe it works only on some combinations of gear/software.
Then of course you get systems accepting broken setups, like 192.168.0.0 host address with /24 or /16 netmask.
However, 192.168.1.0/23 is a valid address a host can have.
Then come the joys of debugging someone's configuration because a tutorial told them to "connect to 0.0.0.0" instead of localhost...