As you have known, mesh data like normal vectors, colors, uv-coordinate, etc. are stored per-vertex (e.g. corresponding to each vertex), but a single vertex is shared between multiple faces, so the data should be interpolated based on these faces. The clearest example is normal vectors blending. Below is a 2D slice of a mesh surface, where the arrow is the direction of normal vectors on each face:
But since the normal vectors are stored per-vertex, the actual vector should be blended between the directions of the surrounding faces, like this:
This way, we can create an impression of a smooth surface even if the true nature of the mesh is flat and hard edged. For more information about vertex data interpolation, please see here.