At the geometry level, OBJ represents polygon meshes, groups, object names, normals and UV coordinates. STL represents a triangle surface with no scene hierarchy or semantic parts. A flattened surface can be dependable when the receiver only needs final triangles, but it is a destructive handoff when someone still needs editable solids, object hierarchy, animation, vertex attributes or manufacturing metadata. Once those semantics are discarded, converting the file back does not reconstruct the original design intent.
A safer production workflow keeps the richest editable source as the master and creates a separate delivery copy for a named destination. After export, inspect units, bounding-box dimensions, up axis, normals, watertightness, object count and material references in the receiving application. The main OBJ caution is that it multi-file material packaging is fragile and it has no animation. The main STL caution is that it drops units, materials, object structure and most manufacturing intent. These are workflow constraints, not minor technical trivia.
The practical verdict is to choose OBJ when the job centers on editable static assets moving between DCC, scanning and mesh tools, and choose STL when it centers on maximum compatibility with slicers, mesh repair tools and fabrication workflows. For 3D printing, the slicer's actual import is the final authority. Confirm millimeter dimensions, orientation and mesh integrity before generating toolpaths, even when the preview initially looks correct.