Preheat your oven to 350 F. Pulse the graham cracker crumbs and 1/2 cup shredded coconut in a food processor until finely ground. Mix with the melted butter, sugar, and salt. Press firmly into the bottom and up the sides of a 9-inch pie plate. Bake for 10 to 12 minutes until golden. Cool completely.
Toast 1 1/2 cups total of shredded coconut (1 cup for the filling, 1/2 cup for the topping) by spreading it on a baking sheet and baking at 350 F for 5 to 7 minutes, stirring every 2 minutes, until golden. Watch carefully as it burns fast. Set aside.
Make the filling by whisking together the coconut milk, whole milk, sugar, cornstarch, egg yolks, and salt in a medium saucepan. Cook over medium heat, whisking constantly, until the mixture thickens and comes to a full bubble, about 7 to 9 minutes.
Remove from heat and stir in 1 cup of the toasted coconut, butter, vanilla extract, and coconut extract until the butter is melted and everything is well combined. The custard should be thick and rich.
Pour the filling into the cooled crust. Press plastic wrap directly onto the surface of the custard to prevent a skin from forming. Refrigerate for at least 4 hours or overnight until completely set and cold.
When ready to serve, whip the heavy cream with the powdered sugar until stiff peaks form. Spread or pipe the whipped cream over the chilled pie. Top generously with the remaining 1/2 cup of toasted coconut. Slice and serve cold.