For the cake: Preheat the oven to 350 degrees F. Butter and flour two 9-inch cake pans; set aside. Whisk together the flour, baking powder and salt in a medium bowl; set aside. Cream the butter and sugar in the bowl of an electric mixer fitted with the paddle attachment until pale yellow, about 3 minutes. Beat in the eggs, one at a time, beating well after each addition. Add the vanilla. Add the flour mixture in 3 equal additions, alternating with half of the milk, beating only until the batter is smooth after each addition.
Spoon the batter into the prepared cake pans. Bake until a wooden pick inserted in the center of the layers comes out clean and the sides of the layers start to pull away from edges of the pans, about 25 minutes. Let the layers cool in the pans for 10 minutes. Remove from the pans and place layers on a rack, rounded side down, to cool completely.
Meanwhile, make the frosting and filling: Beat the butter and vanilla in the bowl of an electric mixer fitted with the paddle attachment until smooth. Beat in the confectioners' sugar a little at a time, letting each addition blend into the butter before adding more and stopping frequently to scrape down the sides of the bowl with a rubber spatula. The mixture should look a little dry at this point. Add 3 tablespoons of the heavy cream a little at a time, beating on high speed until smooth and creamy. Set the frosting aside.
Place one bag of the coconut and the remaining 4 tablespoons of heavy cream in the bowl of a food processor fitted with the blade attachment. Let sit and soak for 10 minutes. Stir in 1 cup of the frosting, leaving the remainder for icing the cake. Pulse to combine and chop the coconut. Set the filling aside.
To assemble, place one cake layer on a cardboard round. Using a small offset spatula, evenly cover the top of the first layer with the reserved chopped coconut filling. Place the other cake layer, rounded side down, on top of the filling. With the offset spatula, spread the top and sides of the cake with the frosting. Sprinkle with the remaining bag of coconut and press so that it sticks to the sides. Serve the cake immediately, or store it in an airtight container in the refrigerator for up to 5 days.