I've written about layer zero (L0) and layer one (L1) before. In that post, I briefly mentioned that "at layer 2 (L2) and above, you have applications that run on top of the blockchain."
This glosses over a lot of detail. So, let's define the layers of web3 (adapted from the web3 foundation):
- L0: protocols and frameworks for creating new blockchains
- L1: blockchains
- L2: services that process requests off-chain and submit the final result to a blockchain
- L3: tools that help developers build for blockchain
- L4: interfaces for non-technical people to use blockchains
For non-technical people, L4 is all you need. You don't have to understand what's going on at L1 to benefit from the security and decentralization of blockchain. You don't need to know that your transaction is running on a particular L2 to see lower cost & greater speed than using the blockchain directly. Just use the app.
For developers, navigating L0-L3 is a mine field. There are so many different ways to solve the same problems. If you have an idea, how do you decide which blockchain to build your app for? Should you use an L2 or go straight to L1? If you think you need to build a new L1, which protocol/framework should you use?
This comes from the diversity of perspective that is building web3 today. There's no best practice to follow. Everything is emergent. Over time, certain approaches will be favored over others and most of the ecosystem will stabilize (i.e. become more accessible for developers). For now, everyone building web3 is a pioneer.
P.S. I'll go deeper on each of these layers eventually. Which do you want to hear about?