Preheat the oven to 325°F (163°C). Grease two 8-inch cake pans with cooking spray, dust with flour, and optionally line the bottoms with parchment rounds for easier release.
Separate the 4 large eggs into yolks and whites. Place yolks in one bowl and whites in a clean, dry bowl for whipping.
Measure the 1 cup cream of coconut and set aside 1/2 cup for optional brushing later; use 1/2 cup of the cream of coconut in the batter.
In the bowl of a stand mixer (or a large bowl with a hand mixer), beat 1 cup softened butter and 1 3/4 cups white sugar on medium speed until light and fluffy, about 2–3 minutes.
Add the reserved 1/2 cup cream of coconut and the 4 egg yolks to the butter and sugar. Beat on medium until combined and fluffy, about 1–2 minutes.
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.
Add the dry ingredients and the buttermilk mixture to the butter mixture in three additions, alternating: (1) one-third of the dry ingredients, (2) half the buttermilk, (3) another third of dry, (4) the remaining buttermilk, (5) the final third of dry. Mix on low speed just until each addition is incorporated. Scrape down the bowl and mix briefly to ensure even mixing.
Beat the reserved egg whites in a clean bowl until stiff peaks form.
Gently fold the beaten egg whites into the batter in 2–3 additions using a rubber spatula, folding just until no large streaks of white remain.
Divide the batter evenly between the two prepared 8-inch pans, smoothing the tops.
Bake at 325°F for about 35–45 minutes. Begin checking for doneness at 35 minutes: insert a toothpick into the center — it should come out clean or with a few moist crumbs — or gently press the center; it should spring back when done. If not done, continue baking and check every 5–7 minutes.
Remove the cakes from the oven and transfer the pans to a wire cooling rack. While the cakes are still hot, optionally brush the tops with the reserved 1/2 cup cream of coconut using a pastry brush to add extra moistness.
Cool the cakes in the pans for 10–15 minutes, then remove from the pans and cool completely on the rack. Once cooled, wrap the cakes in plastic wrap and chill in the refrigerator for at least 4 hours or overnight.
To make the frosting, beat 1/2 cup softened butter, 8 ounces softened block cream cheese, and 1 teaspoon coconut extract on medium speed until smooth and fluffy.
With the mixer on low, add half of the powdered sugar (use about half of the 2-pound bag) and mix 1 minute. Add the remaining powdered sugar and mix on low until incorporated. Increase speed to medium and beat 3 minutes until smooth and spreadable. If the frosting is too stiff, add milk 1 tablespoon at a time until you reach the desired consistency. Do not add so much that the frosting becomes soupy.
Remove the chilled cake layers from the refrigerator. If desired, level the tops with a serrated knife. Place one layer on your serving plate, spread a layer of frosting on top, then place the second layer on top and frost the top and sides of the cake.
Preheat the oven to 350°F (177°C) to toast the coconut. Spread about 1 to 1 1/2 cups sweetened coconut flakes in a single layer on a parchment-lined baking sheet.
Toast the coconut in the preheated 350°F oven for 8–10 minutes, stirring every 2–3 minutes, until evenly golden. Watch closely to avoid burning. Remove and allow to cool completely.
Press the cooled toasted coconut flakes onto the sides and top edge of the freshly iced cake. Trim any loose flakes.
Chill the frosted cake for at least 30 minutes to set the frosting, then slice and serve.