A face corner is a per-vertex, per-face attribute. The traditional examples of this are split normals, face-corner vertex color, and UV.

Here, I'm demonstrating face-corner vertex color. The top face is red, but the other faces are black. Each corner has its own vertex color: the top face's corners are red, while the other corners are black.
What about if this vertex color's domain was vertex (point) rather than face color? Our vertex color would interpolate over the other faces, because rather than there being 3 different face-corner vertex colors for each vertex, there would only be a single vertex color for all of that vertex's face corners:

The vertex data here interpolates across all the faces, rather than just the top face, because the data doesn't know about faces like face-corner data does.
Split custom normals are similar, because there is a different normal for each vertex, for each face of that vertex. Likewise, UV is often similar, because of seams: one face-corner can have one UV coordinate, while a different face-corner, that is still owned by the same vertex, can have a different coordinate.

The selected vertex here has two different UV coordinates, one for each corner. Each UV coordinate will be interpolated across its respective face, but the other face won't know or care about this face's UV.
Of course, in geometry nodes, face-corners don't have to be any of these three, common examples of face-corner data; they can represent any kind of data you'd like. Any time you want data to interpolate across a face but be discontinuous across an edge, you're looking for face-corner data.