Surfaces really just group vertices/triangles in a manner which suits you. It's best to keep the number of surfaces to a minimum for speed purposes.
Texturing is one aspect, in that you can create 'brushes' (a brush being a collection of texture plus properties such as shininess, alpha level, etc) and then apply different brushes to different surfaces on the same mesh depending on your needs (eg. a 'solid' surface for the body of your amazing fighter plane, and a separate transparent surface for the cockpit windshield), but surfaces can also be used to separate parts of a mesh for things like collisions (eg. creating separate surfaces for the wings and fuselage of a plane, and using CollisionSurface to detect whether a shot has hit the wings or the fuselage, etc)...
Ultimately, you decide what warrants being a separate surface in your model depending on your requirements, but you should try to combine things into the minimum number of surfaces where possible.
Also, you can indeed have completely 'non-connected' surfaces (and polygons) in the same mesh.
Texturing is one aspect, in that you can create 'brushes' (a brush being a collection of texture plus properties such as shininess, alpha level, etc) and then apply different brushes to different surfaces on the same mesh depending on your needs (eg. a 'solid' surface for the body of your amazing fighter plane, and a separate transparent surface for the cockpit windshield), but surfaces can also be used to separate parts of a mesh for things like collisions (eg. creating separate surfaces for the wings and fuselage of a plane, and using CollisionSurface to detect whether a shot has hit the wings or the fuselage, etc)...
Ultimately, you decide what warrants being a separate surface in your model depending on your requirements, but you should try to combine things into the minimum number of surfaces where possible.
Also, you can indeed have completely 'non-connected' surfaces (and polygons) in the same mesh.