Bake the pie crust according to package directions until golden brown, then cool completely on a wire rack. If using homemade crust, blind bake with pie weights at 375°F for 15 minutes, remove weights, then bake another 10 minutes until golden. Prick any bubbles with a fork.
Preheat oven to 350°F or use a dry skillet over medium heat. Spread ½ cup coconut in an even layer and toast for 5-7 minutes, stirring every 2 minutes, until golden brown and fragrant. Watch carefully and transfer to a plate.
In a medium saucepan, whisk together sugar, cornstarch, and salt. Add whole milk and coconut milk, whisking constantly to dissolve lumps. Cook over medium heat, whisking frequently, until thickened and bubbling, about 8-10 minutes, then cook 2 more minutes.
Whisk egg yolks lightly in a separate bowl. Slowly pour about 1 cup of the hot milk mixture into the yolks while whisking constantly. Pour the tempered yolk mixture back into the saucepan, whisking constantly. Cook over medium heat for 2-3 minutes until very thick and coats the back of a spoon.
Remove from heat and stir in butter until melted. Add vanilla extract, coconut extract, and 1 cup untoasted shredded coconut, stirring until combined. For extra-smooth filling, pour through a fine-mesh strainer into a clean bowl.
Pour warm custard into the cooled pie crust, spreading evenly. Press plastic wrap directly onto the custard surface to prevent a skin from forming. Refrigerate for at least 4 hours, preferably overnight, until completely set.
Place heavy whipping cream and powdered sugar in a large clean bowl. Beat on medium-high speed until soft peaks form, about 3-4 minutes. Do not overbeat; the cream should hold its shape but look glossy and smooth.
Remove plastic wrap from chilled pie. Spread or pipe whipped cream over the custard, creating decorative swirls. Sprinkle toasted coconut generously over the top. Slice with a sharp knife, wiping the blade clean between cuts.