Preheat the oven to 350. Grease 2 cake pans (9-inch) and then line with parchment paper and grease the paper and dust with flour.
Sift the cake flour (or all purpose flour), baking powder, baking soda onto waxed paper.
In a mixing bowl, beat together the softened butter and sugar on high until light and fluffy, about 3 minutes. Beat in the egg yolks one at a time. On low mixing speed, add the flour mixture in three additions, and add the coconut milk in 3 additions, alternating as you mix. Beat in the vanilla and coconut extracts.
In a clean bowl, beat together the egg whites with a wire whisk until the egg whites form stiff peaks, about 5 minutes. Using a plastic spatula, stir in 1/4 of the egg whites and then gently fold in the rest of the egg whites. Divide the batter between the 2 cake pans and
Bake the cakes about 30 minutes in the preheated oven. Let cool for 5 minutes, then flip out of the pans and back onto the cooling rack.
While the cakes are baking, toast the coconut flakes in a small skillet for 1 to 2 minutes, tossing a few times while they toast.
To make the frosting, combine the egg whiles, 1 1/2 cups sugar, 1/2 cup water and cream of tarter in a double boiler. Bring the water to a simmer and then start beating the frosting with a hand mixer. Beat on high speed for 5 to 7 minutes, or until peaks form. Remove from heat and then beat in the vanilla and coconut extracts. Let cool slightly before frosting the cake.
To assemble the cake, place a small amount of frosting on the serving platter. Place one of the cakes upside down onto the frosting on the platter. Add a small amount of frosting on the bottom layer, then sprinkle the toasted coconut flakes on top. Add a little frosting to the underneath of the top cake layer. Place top layer onto the coconut flakes. Spread the frosting all over the top and sides of the cake layers. Sprinkle the rest of the toasted coconut over the tops and sides of the cake.