The benefit of separating out the hardware layer is that protocol implementors only have to write the network layer once. Then they provide a common interface to the network layer by writing different device drivers for each kind of network interface. ICMP is used both to provide network reliability information and by utilities like ping and traceroute. IP is used for almost all other Internet communication. Because it does not worry about whether packets get to where they are going nor whether they arrive in the order sent, its job is greatly simplified.
Upper layers are responsible for insuring reliable reception of packets.
We could unplug the network wire, wait a minute, plug it back in, and IP would never know the difference. IP is able to get packets to their destinations because every network interface on the Internet has a unique, numeric address. Oddly enough, these numbers are called IP addresses. Notice, every interface has its own address. The Internic is responsible for assigning sets of addresses to organizations, thereby insuring uniqueness.