If you set up an project with your idea, - what you want to archive as a final result. You also need to question yourself, how to structure different data. With the question you asked, everything can be a buffer. Just because their is no limit of what you can do, and what you what to be done as a project. A Buffer for Keyboard input or for previous mouse position is also a buffer. It always depends on what you try to archive. Generally speaking complicated user interaction with a 3D scene comes with a lot of buffers, yes.
For example a Mesh -Buffer would be used if you read an *.obj data format (or whatever) with normals (for light calculation), vertices(position in 3D space) , indices(triangle rasterization). Means your 3d modeling program you were using exported your Mesh and saved all these data. Now you need to unpack it create a Buffer for all provided data in WebGL/OpenGL and send in for processing to the graphics pipeline.
If you want to make a 3D Shooter, like Crysis remake, a rough sketch of the data/buffers yout need would be:
MESH ( buffer )
TEXTURE
- noise (for effects like clouds, vertex displacement)
- uvs (for correct texturing)
- color (red brick wall texture)
- LIGHT calculation
- occlusion (map)
LIGHT
The point here is: When you project become more advanced, you also would need to provide more buffers.