The cross product of two vectors is a vector perpendicular to both, and normal to the plane that they span. If the two vectors are two adjacent edges of a face, their cross product is a vector normal to that face.
Because of this, taking the cross product of two edges of a face of a polygon in 3D is analogous to taking the normal to an edge of a polygon in 2D.
Also, in case it helps you to visualise:
In 2D, you check a series of axes to find one where the projections of the two polygons are disjoint. This means that there was a line, normal to the axis, separating the two polygons.
In 3D, you do the same, checking axes until the projections of the polyhedra onto an axis are disjoint. This time, this means that there is a plane in space, normal to the line, separating the two polyhedra.
In both cases, the projections of the polytopes end up as line segments (intervals), and you just check if they overlap.
N.B.: None of this works for concave polyhedra - think of a ball resting in a cup, not intersecting with it. No matter what axis you project along, the projections of the two shapes intersect, even though the objects are disjoint. This is because there is no plane separating the ball and the cup. Using separating axis tests on non-convex polytopes will give false intersections.