Per-vertex attributes passed on are "interpolated" using the other values on the primitive.
Fragment shader picks up the interpolated value and uses that.
The value is effectively an estimate of what value should be at that position, had we defined it ourself.
Interpolation is a process that happens during the rasterization stage.
Interpolation is used for quickly and accurately estimating values without defining them.
Can be used for interpolating Texture coordinates when mapping textures
Can be used for interpolating normal vectors when handling lighting
Especially useful in Phong Shading to create illusions o smooth/rounded surfaces
Classic example: Using position coordinates as RGB values.