In a large bowl, beat the butter and sugar for a minute. Add the eggs, sour cream and coconut milk and mix until combined. Add the remaining cake ingredients and beat for 1-2 minutes until smooth and only a few lumps are visible.
In 24 lined cupcake pans, fill each cup ¾ full. Bake at 350° for 25-30 minutes until a toothpick inserted in the center of the cupcake comes out clean. Set aside and allow to cool completely.
Meanwhile, spread the coconut on a baking pan and bake for 5-7 minutes, stirring every couple minutes to ensure it doesn't burn. Remove from the oven and allow to cool.
In a large bowl, beat the butter and shortening for 3-4 minutes until smooth and lightened a bit in color. Add the extracts, coconut milk and ⅓ of the powdered sugar and beat for 2-3 minutes. Add half of the remaining powdered sugar and beat for an additional 2-3 minutes. Add the remainder of the powdered sugar and beat the buttercream until it is light and fluffy. The longer you beat the buttercream, the lighter it will become.
Pipe or spread the buttercream on the cooled cupcakes and after each one immediately sprinkle with toasted coconut. If you wait too long, the coconut won't stick to the buttercream. Store in an airtight container.