TopoDS_Face could be used like an Handle, in fact TopoDS_Face inherit from TopoDS_Shape which has an Handle to a TShape, a location and an orientation:
Handle_TopoDS_TShape myTShape;
TopLoc_Location myLocation;
TopAbs_Orientation myOrient;
so if you assign a TopoDS_Face to another TopoDS_Face, they will share the same TopoDS_TShape using the Handle_TopoDS_TShape.
And yes, TopoDS_Face is the way to represent general trimmed surface.
Good Luck,
Commenter-1.