The function your looking for is Composition which does exactly what you would like it to do. For instance,
{rot1, rot2} = MapThread[RotationTransform, {{theta1,theta1},{point1,point2}}]
composed = Composition @@ %
Composition[
RotationTransform[theta1, point1],
RotationTransform[theta1, point2]
]
which can then be used like rot1 and rot2 would, e.g. composed[ {x, y, z} ]. From some experiments, it seems that Composition will combine multiple TransformationFunction into a single TransformationFunction, e.g.
Composition[ RotationTransform[ Pi/2 ], RotationTransform[ Pi/2] ] ]
simplifies to
RotationTransform[ Pi ]
Here is a specific example using the following rotations
RotationTransform[Pi/2, {1, 0}]
RotationTransform[Pi/2, {1, 1}]
composed = Composition @@ {%, %%}
which gives the output (it's in picture form as the output is displayed using boxes):

Now, applying them one at a time to a triangle, using the following code
FoldList[
{EdgeForm[Black], White, #2[#1]} &,
Polygon[{{1, 0}, {0, Sqrt[3]}, {-1, 0}}],
{# &,
GeometricTransformation[#, RotationTransform[Pi/2, {1, 0}]] &,
GeometricTransformation[#, RotationTransform[Pi/2, {1, 1}]] &}
][[2 ;;]] //
GraphicsRow[
Graphics[#, Frame -> True, PlotRange -> {{-3, 3}, {-3, 3}}] & /@ #
]&
gives

Using the composition directly via
Graphics[{
EdgeForm[Black], White,
GeometricTransformation[
Polygon[{{1, 0}, {0, Sqrt[3]}, {-1, 0}}],
composed]
}, Frame -> True, PlotRange -> {{-3, 3}, {-3, 3}}]
gives the identical end result

Two things to note here. First, the functions are entered into Composition in reverse order of application, i.e. the first function to be applied is last, and the last function is first. Second, I made use of GeometricTransformation to apply the rotations to a Graphics primitive.