Preheat the oven to 350°F (175°C). Line a 12-cup muffin tin with paper liners.
In a medium bowl, whisk together the all-purpose flour, baking powder, and 0.5 tsp fine salt until evenly combined.
In a large bowl with a hand mixer or stand mixer fitted with the paddle, cream 0.5 cup softened unsalted butter with the granulated sugar on medium speed until pale and fluffy, 2–3 minutes.
Beat in the eggs one at a time, allowing each to incorporate, about 30 seconds each. Mix in 2 tsp vanilla extract.
With the mixer on low, add the dry ingredients in three additions, alternating with the whole milk in two additions (dry–milk–dry–milk–dry). Mix just until the batter is smooth; do not overmix. Scrape the bowl once.
Divide the batter evenly among the liners, filling each about 2/3 full.
Bake until the tops are set and spring back and a toothpick inserted in the center comes out clean or with a few moist crumbs, 17–20 minutes.
Cool the cupcakes in the pan for 5 minutes, then transfer to a wire rack to cool completely, about 30 minutes.
For the frosting, in a clean bowl beat 1 cup softened unsalted butter on medium speed until creamy, 1–2 minutes.
Gradually add the powdered sugar and 0.25 tsp fine salt, beating on low to combine, then on medium until slightly fluffy, 1–2 minutes.
Beat in 2 tsp vanilla extract and 2 tbsp of the heavy cream, then continue beating until very light and smooth, 2–3 minutes. If needed, add up to 1 more tbsp heavy cream to reach a soft, spreadable consistency.
Once cupcakes are completely cool, frost with the vanilla buttercream using a spatula or piping bag. Serve at room temperature.