For the cake: Preheat the oven to 350 degrees F. Grease and flour two 9-inch cake pans.
Sift together the flour, baking powder and salt in a large bowl and set aside.
In an electric mixer, mix the butter and granulated sugar on high speed until fluffy. Scrape the sides of the bowl and mix for a few more seconds. Add the eggs one at a time, mixing well after each addition. Add the vanilla and mix to combine. Alternate adding the dry ingredients and milk in 3 batches, mixing for a few seconds after each addition. Scrape the sides of the bowl, then mix 1 final time.
Divide the batter between the prepared cake pans and bake until done (a wooden skewer inserted in the cake should come out completely clean), 28 to 30 minutes. Allow to cool for 10 minutes, then turn out to cool completely.
For the buttercream frosting: Sift the powdered sugar and cocoa together in a large bowl and set aside.
In an electric mixer with the paddle attachment, cream the butter until smooth, about 2 minutes. Turn off the mixer and add half of the sugar/cocoa mixture. Turn to low speed and mix to combine. Add the rest of the mixture and mix again. Add the cream, vanilla and salt, scrape the sides and beat until fluffy, 2 to 3 minutes. Thin out with a tablespoon of cream at a time if needed.
Ice the cake with a generous layer in the center and spread all around the sides. WARNING: MUST BE SERVED WITH A GLASS OF COLD MILK!