Warm the milk until it’s just warm to the touch (about 110°F). Stir in the sugar and sprinkle the yeast on top. Let it sit for 5-10 minutes until it foams.
In a large bowl, combine the flour and salt. Add the melted butter, egg, and the foamy yeast mixture. Stir until the dough begins to come together. Turn it onto a floured surface and knead for about 8 minutes until smooth and elastic.
Place the dough in a lightly greased bowl, cover it, and let it rise in a warm spot for 1 to 1.5 hours, or until doubled in size.
Mix the brown sugar, ground cinnamon, and chopped nuts (if using) in a small bowl. Set aside.
Punch down the risen dough and roll it out on a floured surface into a 12x8 inch rectangle.
Brush the dough evenly with melted butter. Sprinkle the cinnamon-sugar mixture over the buttered dough. Roll the dough into a tight log from the long edge and pinch the seam to seal.
Cut the log into 8 equal pieces using a sharp knife or unflavored dental floss. Place the rolls cut-side up in a greased baking dish, leaving space between each.
Cover the rolls loosely and let them rise for another 30-45 minutes until puffy.
Preheat oven to 350°F (175°C). Bake the rolls for 20-25 minutes, or until golden brown on top.
While baking, beat together cream cheese, powdered sugar, vanilla extract, and milk until smooth and creamy.
Let rolls cool for 5-10 minutes before drizzling the cream cheese icing over them. Serve warm and enjoy.