Normals are calculated per vertex, not per face. That’s why engines actually calculate more vertices if there are UV splits or smoothing splits.
I know this.
I was puprosefully talking from a simplistic veiw to avoid going down the rabbit hole of explaining how you can define a hard edge when you only have one normal direction, vertex splitting, atlases etc. I think it’s fundamentally easy to visualize that a triangle can only face it one direction and that a point that defines a corner for many triangles is going to point somewhere relative to where those triangles point.
I found some videos on youtube that explain materials:
The first video alone explained it quite well for me. At first I thought that you made a 3D mesh, applied a material to it, then you applied a texture to it and then a normal map (if needed). I was under the assumption that each step was done separately but I now know that to be wrong.