First, make the cake. Position a rack in the center of the oven and preheat the oven to 350°F. Generously spray a 9 x 13-inch cake pan with cooking spray.
In a small bowl, whisk together the flour, baking powder, and salt. In a small liquid measuring cup or pitcher, whisk together the coconut milk and coconut extract. In the bowl of a stand mixer fitted with the whisk attachment, whisk the egg whites. Whisk on low speed for 1 minute, then turn the mixer up to medium-high. Whisk until stiff peaks form, 3 to 4 minutes. Use a wooden spoon or ladle to carefully scoop the egg whites into a medium bowl—be careful not to deflate them!
Pour the egg yolks into the stand mixer bowl (there's no need to clean the bowl!) and add the sugar. Whisk on medium until pale yellow and doubled in volume, 2 to 3 minutes. Reduce the mixer to low and slowly pour in the milk mixture, whisking until just combined.
Sprinkle the dry ingredients over the egg yolk mixture, then use a rubber spatula to fold in the ingredients until just combined. Scoop half of the egg whites over the mixture and fold them in with the spatula. Repeat with the remaining egg whites and fold them in until no major lumps of egg white remain and the mixture is just combined. At this point, it will be a very light and fluffy cake batter. Pour the batter into the prepared pan and use an offset spatula to smooth the top. Bake the cake. Bake for 22 to 24 minutes, or until the top of the cake bounces back when gently pressed and a skewer inserted into the center of the cake comes out with a few crumbs attached. Cool the cake in the pan on a wire rack completely before soaking. The cake will shrink as it cools—this is normal!
Once the cake is cool, make the soak and assemble the cake. Use a fork to poke holes all over the top of the cake.
In a large liquid measuring cup or pitcher, whisk together the sweetened condensed milk, evaporated milk, and coconut milk. Slowly pour the milks over the cake, a quarter cup at a time, to allow the milks to soak fully between each pour. It's likely that the cake will stop absorbing liquid about two-thirds of the way through the mixture. This is normal! It will seem like too much liquid, but trust the recipe! Loosely cover the cake with plastic wrap and refrigerate for 3 to 4 hours, preferably overnight, to allow the cake to absorb the milks.
Before serving, toast the coconut flakes. Spread the coconut flakes in a large nonstick frying pan over medium heat. Cook for 2 to 3 minutes, using a spatula to toss the flakes occasionally, until golden brown. Remove from heat and scrape the coconut flakes onto a plate to stop them from cooking further.
Make the whipped cream. In the bowl of a stand mixer fitted with the whisk attachment, combine the cream and confectioners' sugar. Whisk on medium-high speed soft peaks form, about 3 minutes. Use a rubber spatula to scrape the whipped cream over the cake. Use an offset spatula to make large, sweeping motions across the whipped cream to spread it over the cake. Garnish with toasted coconut flakes.
Serve and store. Serve immediately after garnishing with whipped cream. The coconut tres leches cake will keep, covered loosely in plastic wrap, in the refrigerator for up to 3 days.