First, preheat the oven to 350° Fahrenheit and line two cupcake trays with paper cupcake cups or grease with cooking spray. Then, toast all of the coconut. Heat a large frying pan on medium heat. Pour in all of the desiccated (not shredded) coconut and let sit for about 30 seconds. Then begin stirring coconut with a rubber spatula constantly. It will take a few minutes but all of the sudden the coconut will begin to turn golden brown - keep stirring! Toast until fragrant and all golden brown then immediately remove from heat and scrape coconut into a small bowl to cool. Repeat for the flaked coconut for the decoration/topping - toasting until golden brown but not burned.
Then, in a large bowl, whisk together the dry cupcake ingredients (flour, almond meal, sugar, cooled toasted desiccated coconut, baking powder, soda, salt) and set aside.
Separate the egg yolks into a large bowl and the egg whites into a medium bowl. Using an electric mixer, beat the egg whites until stiff peaks form, then set aside. Using the same electric mixer, beat the egg yolks, coconut milk, vanilla, oil, and extracts until well blended, then add in the dry ingredients and stir together using a rubber spatula.
Finally, fold in the egg whites 1/3 at a time until fully combined. Spoon batter into the prepared cupcake pans, filling each cup about 3/4 of the way. Bake for 18-22 minutes or until a skewer or toothpick inserted into the middle of one comes out clean. Then let cupcakes cool completely before frosting.
Make the frosting while the cupcakes cool. In a large bowl, using the cleaned electric mixer, beat butter on high until creamy, then add in 1 cup of powdered sugar at a time until smooth. Add in the extract and toasted, desiccated coconut and continue to beat on high until totally combined. Spoon buttercream into a piping bag, or simply wait until cupcakes cool and use a butter knife to spread on frosting, whatever you have time for! Frost cupcakes, then decorate with a sprinkling of the toasted, flaked coconut, and serve!