Preheat oven to 350°F and line a 12 cup muffin pan with paper liners.
In a medium bowl, whisk together the flour, baking powder, baking soda, and salt. Set aside.
In a stand mixer fitted with the paddle attachment, beat the softened butter and sugar on medium speed for 2-3 minutes until pale and fluffy. Scrape down the sides as needed.
Add the eggs one at a time, beating well after each addition. Mix in the vanilla and coconut extracts until combined.
In a liquid measuring cup, stir together the coconut milk and pineapple juice. Set aside.
With the mixer on low, add the flour mixture in three parts, alternating with the coconut milk mixture, beginning and ending with flour. Mix just until each addition is incorporated. Do not overmix.
Gently fold the well-drained crushed pineapple into the batter with a rubber spatula until evenly distributed.
Divide the batter evenly among the 12 liners, filling each about 3/4 full. Bake for 18-20 minutes, until a toothpick comes out clean.
Let the cupcakes rest in the pan for 5 minutes, then transfer to a wire rack to cool completely (about 45 minutes) before frosting.
For the frosting, beat the softened butter on medium speed until smooth and creamy, about 2 minutes. Gradually add the powdered sugar, one cup at a time, beating well after each addition.
Add the coconut milk, coconut extract, and pinch of salt. Beat on medium-high for 2-3 minutes until light, fluffy, and holding soft peaks.
Spread the shredded coconut on a baking sheet and toast in a 325°F oven for 5-7 minutes, stirring once or twice, until golden brown. Let cool completely.
Transfer frosting to a piping bag fitted with a large star tip. Pipe a swirl onto each cooled cupcake, press toasted coconut onto the frosting, and top with a maraschino cherry.