Maybe is a limtation of file format or something else.
With dxf file format works fine:
t = Graphics3D[{Cylinder[{{0.7, 0, 1.4}, {0.1, 0, 2.1}}, .1],
Ball[{0.1, 0, 2.1}, .1],
Cylinder[{{0.1, 0, 2.1}, {-0.4, 0.6, 1.6}}, .1]}]
Export["test.dxf", t]
Import["test.dxf"]

Another workaround:
a = Cylinder[{{0.7, 0, 1.4}, {0.1, 0, 2.1}}, .1];
b = Ball[{0.1, 0, 2.1}, .1];
c = Cylinder[{{0.1, 0, 2.1}, {-0.4, 0.6, 1.6}}, .1];
a1 = BoundaryDiscretizeGraphics[a,
MaxCellMeasure -> {"Length" -> 0.05}];(* Discretize with a maximum edge length of 0.05*)
b1 = BoundaryDiscretizeGraphics[b,
MaxCellMeasure -> {"Length" -> 0.05}];
c1 = BoundaryDiscretizeGraphics[c,
MaxCellMeasure -> {"Length" -> 0.05}];
reg = RegionUnion[a1, b1, c1]
Export["test.stl", reg]
Import["test.stl"]
