Make the cake layers: Preheat the oven to 350°F (180°C) with an oven rack in the middle. Spray 3 (8-inch/20cm) round cake pans with baking spray with flour. Line the base of the pans with parchment paper, and lightly spray the paper.
Sift the flour, baking powder, and salt together into a medium bowl. Whisk the buttermilk, melted butter, oil, vanilla, and coconut extract together in a large liquid measuring cup with a pour spout.
In the metal bowl of a stand mixer (or in a medium heat-safe mixing bowl), whisk together the eggs and sugar together until well combined. Set the bowl over a medium pot of barely simmering water (make sure the base of the bowl isn’t touching the water). Heat, whisking constantly, until the mixture reads 105°F (40°C) on a thermometer.
Remove the bowl from the double boiler, and transfer to the electric mixer fitted with the whisk attachment. (Alternatively, if you’re using a hand mixer, whip in the same bowl you heated the eggs in.) Beat the eggs on high speed until pale and thick, 5 to 6 minutes. Reduce the speed to medium and whisk for 2 to 3 minutes more.
Sprinkle about one-quarter of the flour mixture onto the egg mixture, and mix on low speed just until incorporated. Add the remaining flour mixture in 2 to 3 additions, mixing just until incorporated into the batter.
With the mixer running on low speed, gradually add the buttermilk mixture to the bowl in a slow, steady stream. Once it’s all added, mix until the batter is evenly combined. Fold in the coconut with a silicone spatula until incorporated.
Divide the batter between the prepared pans (about 550 grams per pan).
Bake until the center springs back gently when touched, 35 to 40 minutes. Remove the cakes from the oven, and place the pans on a cooling rack. Let them cool in the pans for 15 minutes and then run a small offset spatula around the outside of the pan to loosen it. Invert the cakes onto the cooling rack, gently peel away the parchment, and allow to cool completely.
Make the custard filling: In a medium pot, whisk the coconut milk, cream, sugar, cornstarch, salt, and eggs until well combined. Transfer to the stovetop and cook over medium-low heat, whisking constantly, until the mixture begins to thicken, 2 to 4 minutes. It can be helpful to switch to a silicone spatula for better stirring once it begins to thicken.
Continue to cook, stirring constantly, until the mixture comes to first boil (fat bubbles coming up from the center of the pot), 2 to 3 minutes more. Remove the pot from the heat, and stir in the butter, vanilla, and coconut until the butter is fully melted and everything is evenly combined.
Transfer the mixture to a medium heat-safe bowl, and cover directly with plastic wrap. Cool to room temperature and then transfer to the refrigerator until fully chilled, at least 2 hours. (To speed up cooling, pour the custard onto a baking sheet, and cover directly with plastic wrap. The increased surface area will cool it down much faster!)
Make the frosting: In the bowl of an electric mixer fitted with the whisk attachment, beat the butter on high speed until nearly white in color, fluffy, and very aerated, 7 to 8 minutes. Scrape the bowl well, add the vanilla and salt, and beat for 1 minute more.
With the mixer running on medium speed, gradually add the sweetened condensed milk in about 4 additions, pouring it into the mixer in a slow, steady stream. Scrape the bowl well once or twice as you incorporate the condensed milk.
Continue to beat the frosting on medium-high speed until it’s thick and smooth, 1 to 4 minutes more. (If the frosting looks broken or grainy at any point, keep going. Raise speed to high and continue to whip until it comes back together.)
Transfer one-third of the frosting (about ¾ cup or 194 grams) into a pastry bag and with a large round pastry tip (about ½ inch/1 cm wide), or cut a ½-inch/1cm opening from the end.
Assemble the cake: Use a serrated knife to remove the domed top of the cakes, if needed. Use a dab of frosting to adhere a cake layer to a cake board, platter, or cake stand. Pipe a ring of frosting around the outside edge of the cake layer. Scoop about one-third of the custard filling (about 1 cup or 300 grams) into the center, and spread it into an even layer.
Place another cake layer on top, and gently press down to adhere. Repeat the piping and filling process with another cake layer. Place the final cake layer on top, and press down gently to adhere.
Use a small amount of frosting to apply a thin, allover crumb coat of frosting. Transfer the cake to the refrigerator for 15 to 20 minutes to firm up.
Use the remaining frosting to frost the top and sides of the chilled cake in a thin layer of frosting all over. Use the pastry bag to pipe a ring of frosting around the outer edge, and spoon the remaining custard filling into the center of it, and spread into an even layer.
Use your hands to press coconut into the sides and the top, covering all the frosted portions of the cake (leaving the custard uncovered). Densely pack the coconut, pressing it firmly onto the cake.
Use a knife to gently divide the cake into 8 even slices. Just barely mark the surface of the cake as a guide. Use the remaining frosting in the pastry bag to pipe a rounded dollop in the center of each slice, closer to the outer edge. Place a Raffaello candy on top of each dollop.
Refrigerate the cake until ready to serve, but let it stand at room temperature for about 30 minutes to soften the frosting before serving. Cover and refrigerate for up to 3 days.