Preheat oven to 350°F (175°C). Grease and flour three 9-inch round cake pans. (Line pans with parchment paper for easy release and clean-up.
Measure sifted cake flour, baking powder, and salt; sift together three times. Set aside.
Combine sour cream and coconut milk in a small bowl and set aside.
Using an electric mixer with a large mixing bowl, cream butter and sugar together until light and fluffy. Add coconut extract and mix to combine. Add flour mixture alternately with coconut milk and sour cream mixture, beating after each addition. Remove bowl from mixer and set aside.
[DO NOT begin this step until you have completed the previous step.] In a medium mixing bowl, beat egg whites until foamy. Add 1/2 cup sugar gradually, beating until meringue will hold soft peaks.
[Do this step by hand. Do not use a mixer.] Carefully fold beaten egg whites into batter.
Pour batter evenly into the three prepared cake pans. Bake in preheated oven for 22-25 minutes, or until a toothpick or skewer comes out clean.
Allow cakes to cool in their pans over wire rack for 10 minutes. Carefully tap out onto wire rack to cool completely.
Using an electric mixer, beat butter on medium-high until light and fluffy. Add coconut and vanilla extracts and salt and mix to thoroughly combine.
Slowly add powdered sugar, mixing well after each addition.
Add coconut milk, one tablespoon at a time time, beating on medium-high until fully incorporated.
Spread the top of the bottom layer of cake with frosting. Add the middle layer and frost top. Add the top layer and frost sides and top of cake.
Sprinkle flaked coconut over top and sides of cake.
VERY IMPORTANT: Sift the flour, and THEN measure it! (If you're wondering why, try measuring it first, sifting it, and then measuring again.)