Essentially, each layer has a specific function and doesn't need to worry about the function of the other layers.
On the very top, an application opens a TCP socket and sends a stream of data to the destination. It doesn't care about routing, packets, checksums, and line codes.
On the next lower layer, a transport protocol like TCP, sitting on top of the network layer doesn't need to worry how to transport data across the globe. It can concentrate on packetizing a data stream, retransmissions, segment sorting, congestion and such.
The internet or network layer's function is to route a packet across a large network to its destination. It doesn't know about applications or data streams, it just knows how to get from A to B. In real life, this is how IP packets are forwarded across the Internet by routers.
On the next lower level, a link layer protocol like Ethernet can concentrate on physically framing the logical network packets and moving them across a rather small, 'flat' network.
Ethernet also covers the physical layer were frames are serialized, encoded, moved over copper or fiber links, decoded, reassembled and passed back to the destination's link layer.
Note that I used just one example for each layer. There are many alternatives. The network layer might be using IPv6 and the physical layer ADSL. The application doesn't need to know about this, its interface to the 'stack' is the same. Likewise, the network layer doesn't know about the physical layer because its downward interface is always the same as well.