Combine 2 cups of flour, yeast, salt, and sugar in a large bowl, mixing well.
In a microwave-safe bowl, warm the milk and butter for about 30 seconds until the butter is mostly melted, and the mixture is warm, not hot.
Once warmed, add the milk and butter mixture to the dry ingredients.
Add the egg and beat at low speed, gradually increasing to high until fully combined, approximately 2 minutes.
Scrape down the sides of the bowl and gradually add 1 more cup of flour, continuing to beat until combined.
Slowly incorporate the remaining cup of flour until the dough begins to pull away from the sides of the bowl and forms a ball.
Transfer the dough onto a floured surface and knead for approximately 10 minutes until it becomes smooth and stretchy.
To check if the dough is ready, stretch a piece between your fingers without it breaking; if it stretches without tearing, the gluten has developed, and your dough will be beautifully soft and pillowy.
Transfer the dough to a bowl coated with oil, cover it, and let it rise in a warm place for about 1 hour or until it has doubled in size.
While the dough rises, prepare the filling. Peel, core, and dice the apples into small pieces. In a small bowl, combine the sugar, spices, and salt, mixing well. Set aside.
Once the dough has risen, roll it out on a well-floured surface into a long rectangle measuring about 18 x 12 inches.
Spread the butter for the filling evenly over the dough, reaching all the way to the edges. Sprinkle the sugar mixture and the diced apple pieces over the butter, pressing them gently into the dough.
Starting from the long end, tightly roll the dough away from you into a compact log, ensuring to seal the bottom edge by pinching the dough together.
Using either dental floss or a sharp knife, cut the rolled dough into 12 evenly sized rolls. Place the rolls in a 9 x 13 inch baking pan lined with parchment paper. Loosely cover the pan with a dishcloth and let the rolls rise for another hour until they double in size and appear puffy.
Preheat your oven to 350°F (175°C). Bake the cinnamon rolls for approximately 30 minutes or until they turn golden brown and are no longer doughy.
While the rolls cool, prepare the cream cheese frosting. In a stand mixer fitted with the whisk attachment, combine the cream cheese, butter, powdered sugar, milk, salt, and vanilla extract. Beat at low speed, gradually increasing to high until the frosting becomes light and fluffy.
Spread the cream cheese frosting evenly over the cooled cinnamon rolls. Serve and enjoy them warm!