Preheat the oven to 315°F. Prepare two 8-inch cake pans by spraying with cooking spray, dusting with flour, and optionally lining the bottom with parchment rounds.
In a mixer on medium speed, beat 1 cup softened butter, 1 3/4 cups sugar, and 1 cup cream of coconut until combined, then add the four egg yolks and beat until fluffy.
In a separate bowl, sift together 2 1/2 cups flour, 1 teaspoon baking powder, 1/2 teaspoon baking soda, and 1/2 teaspoon salt.
In a liquid measuring cup, combine 1 cup buttermilk with 1 teaspoon coconut extract.
With the mixer on low, add the dry ingredients and the buttermilk to the butter mixture in alternating additions, beginning and ending with the dry ingredients. Scrape the bowl and mix briefly to combine.
In a clean bowl, beat the four egg whites until stiff peaks form, then gently fold the beaten egg whites into the batter until just incorporated.
Divide the batter evenly between the prepared pans and smooth the tops.
Bake for about 50 minutes, then test the centers with a toothpick or by pressing lightly—cakes are done when they spring back or a toothpick comes out clean. If needed, bake in additional 10-minute increments until done.
Remove cakes from the oven and cool on a rack. While still hot, optionally brush the tops with the remaining cream of coconut (about 1/2 cup) to add extra moisture.
Once cooled, wrap the cakes in plastic and refrigerate for at least 4 hours or overnight for best texture.
To make the frosting, beat 1/2 cup softened butter with 8 ounces softened cream cheese and 1 teaspoon coconut extract until smooth and fluffy.
Add the powdered sugar in two additions: mix half on low speed for about 1 minute, then add the rest and mix on low until incorporated. Increase speed to medium and beat 3 minutes until smooth. If too stiff, add milk 1 tablespoon at a time to reach a spreadable but not soupy consistency.
Frost the cake layers as desired, using frosting between the layers and over the top and sides.
Preheat the oven to 350°F. Spread 1 to 1 1/2 cups sweetened coconut flakes on a parchment-lined baking sheet and bake 8–10 minutes, stirring every few minutes, until golden and toasted. Cool.
Press the cooled toasted coconut flakes onto the sides and top of the freshly iced cake. Slice and serve.