Preheat oven to 350 degrees. Like two muffin tins with cupcake liners; set aside.
Using an electric mixer, combine flour, sugar, cocoa powder, baking soda, baking powder, and salt. Mix on medium speed until well-combined.
Add buttermilk, water, oil, eggs, and vanilla to the bowl. Mix on low speed for about 30 seconds, just until the liquids are somewhat incorporated, then increase the speed to medium-high and mix for 2-3 minutes. Scrape the sides of the bowl at least once to ensure everything is well combined.
Divide the batter evenly among cupcake liners, filling each about 2/3 of the way full.
Bake for 18-22 minutes, until the centers are set and a toothpick or sharp knife inserted into the middle comes out clean.
Allow cupcakes to cool for 10-15 minutes inside the baking tins, then remove to a wire rack and let cool completely.
To make the frosting, beat the softened butter using an electric mixer or vigorously by hand. Add cocoa powder and mix well. Add 2 cups of powdered sugar and beat well. Scrape down the sides of the bowl, add 2 tablespoons of the milk along with the vanilla and pinch of salt, and mix to incorporate. Add another 1 cup powdered sugar and beat on medium-high speed until light and fluffy. Add more powdered sugar and/or extra milk to thicken or loosen the consistency, as desired, or just to make a smidge more frosting if you plan to frost generously.
Frost cupcakes as desired. You can simply use a knife or an offset spatula to sweep a layer on top of each cupcake, or scrape frosting into a piping bag and pipe into rosettes, crowns, or another design.