The phong reflection model is lighting calculations made for any given normals of a point or surface if needed. it includes the terms, diffuse, ambient and reflection
Phong shading is the method of calculation normals between vertexes on a per pixel basis rather than doing it on a per vertex normal
This is super fast and precise when it comes to very specific situations. with the vectors n = point normal, l = light intensity, and v = viewer or COP some assumptions can be made to make these variables, constants. in the case that a surface is a perfect plane, n becomes constant. all points and faces point in the exact same direction and n can be calculated once for all points. l and v can become a constant if distant enough to n. with a large enough distance or plane size difference to the light source and viewer all points on a given plane will, at least to within a satisfactory error margin, in relation the the viewer be illuminated equally. a pro could be that no interpolations are needed with is also a con as this produces march bands. The big drawback is the very specific situations this requires to be producing a satisfactory results as mach bands become frequent outside optimal usecases.
Also known as smooth shading, Gouraud uses the same vectors n, l, and v to calculate color values on each vertex where the rasterizer interpolates the difference between the different colors giving the illusion of a smoother highpoly mesh. This results in a smooth transition of vertex colors between adjacent vertex colors which is still fast but slower than flat shading. but this can be used in other settings so its a con/pro. A big drawback to this method would be that highlights or areas with a high contrast will be appearing to "jump" around the mesh on low poly meshes. this is due to calculations are done on a per vertex basis instead on a pixel or surface base. Another drawback would be that this shading method requires more data structures to handle correct vertex normal calculations as this method needs a vertex normal to be the averaged normals of all adjacent polygons that share that vertex.
Phong shading dont need the rasterizer to interpolate between vertex colors but in contrast interpolates the surface normals which gets renormalized in the the fragment shader. this is slower as it is on a per pixel basis not a vertex one but will produce better and more realistic results.