Preheat the oven to 160 C. Line 5 muffin moulds with liners. You can also make an even 4 cupcakes with this recipe but the tops are a little more domed and flatter tops are easier to frost. See notes for more.
In a small saucepan on low heat, combine the milk and butter. Heat till the butter has melted and the mixture is hot but not boiling. Set aside to cool slightly.
In a mixing bowl, whisk together the yoghurt, vanilla and sugar until smooth.
Now sift in the flour, baking powder, baking soda and salt, if using. Fold gently to combine.
Gradually pour in the hot milk and butter mixture, whisking as you go (a balloon whisk is great here), till no lumps remain. Do not over beat or mix too vigorously. The batter is fairly runny.
Pour the batter into the 5 moulds, filling them about 2/3rds of the way. Bake for 20 minutes until they have risen, lightly browned on the top, feel springy to the touch and a toothpick poked in the center comes out clean.
Set aside to cool completely before frosting.
To make the frosting, beat the butter and cream cheese with a hand mixer on medium speed, until smooth and creamy. Add the vanilla and sift in the icing sugar. Beat again till combined, then briefly beat in the cream, if using. The frosting is not super thick (you could add sugar if you want to thicken it further), so if you're working in a warm kitchen, place it in the fridge for 15 minutes to firm up a little, making sure it's still a spreadable consistency.
Spoon the frosting on top of each cupcake and use a blunt knife to smoothen it. Finish with sprinkles and eat immediately!
Store in the fridge for 4 to 5 days. Allow the cupcakes to soften for about 20 minutes at room temperature for the best texture. Happy baking!