For the cupcakes: Preheat oven to 350°F (165°C). Line muffin tins with 20 cupcake liners.
Beat the butter and sugar on high speed until light and fluffy (3-5 minutes). Add the eggs, one at a time, and beat until incorporated. Whisk together flour, baking powder and salt in a medium-sized bowl. Add the vanilla to the milk. Add one third of the flour mixture to the butter-egg mixture and beat on low until well combined. Add one third of the vanilla milk and beat on low until well combined. Repeat procedure with the remaining flour and milk mixtures, scraping the bowl between additions.
Divide the batter into 5 small bowls and color with food coloring as desired. It’s best to start with a tiny amount of food coloring. Transfer the colored batter into 5 plastic bags. Cut a corner off your first bag and pipe about a teaspoon of the bottom color into each of the 20 cupcake liners and smooth the batter to the edges of the cupcake liners with the back of a small spoon. Repeat with the remaining colors.
Bake for 16-18 minutes until a toothpick inserted into the center of a cupcake comes out clean. Cool cupcakes completely in tins on a wire rack.
For the frosting: Beat the butter and salt in a mixing bowl on medium speed for 3-5 minutes until the butter appears nearly white. Add the sifted powdered sugar and vanilla and mix on low speed until blended. Scrape bottom and sides of mixing bowl with a rubber spatula and mix again briefly. Add the heavy cream and mix on medium speed for about 3 minutes, until the frosting is creamy and fluffy.
To assemble the cupcakes: either pipe frosting onto cupcakes with a piping bag and round tip or spread it on with a butter knife. The amount of frosting from this recipe is enough for at least 24 cupcakes. Tightly covered, cupcakes stay fresh for 2 days at room temperature or for 4 days in the refrigerator, whereby they are best if eaten the day of or the day after making.