The statement:
The IP address 0.0.0.0 [...] means ‘‘this network’’ or ‘‘this host.’’
is misleading. It is not a "or" but "This host on this network."
From RFC1122:
{ 0, 0 }
This host on this network. MUST NOT be sent, except as
a source address as part of an initialization procedure
by which the host learns its own IP address.
The loopback address (actually any address in the 127.0.0.0/8 network) is explained in the same RFC this way:
{ 127, any }
Internal host loopback address. Addresses of this form
MUST NOT appear outside a host.
So both a loopback address and the all zero address can be referred as "this host", but they have in fact very different usages:
the 0.0.0.0 address can be observed on a network, but only during the DHCP/BOOTP process, and only as a source address.
any address in the 127.0.0.0/8 can not be viewed anywhere on the network, and can only be used for:
A 127.X.X.X address is attached to a loopback interface. Such an interface has no underlying layer attached (i.e. it is not attached to a link layer). The packet is processed and responded to in the Internet layer. So there's really no way for this packet to reach anything outside the host.
But a packet sent from 0.0.0.0 is processed normally by the network stack, except that there's no routing decision, it is bound to the interface that is initializing, so it's sent out of this interface and goes through the link layer (which can be something else than Ethernet), then on the network.