The difference is in the number of lighting calculations done. Where the lighting calculation produces some color. Flat does one per face, uses the color across the face. Gourand does 3 (for a triangle, one for each vertex), interpolates the color across the face. Phong does a light calculation for every pixel/fragment (where the normal is interpolated across the face).