Pulse graham crackers in a food processer until finely ground or using a large zip-lock bag, place crackers in bag, squeeze out air, seal and roll with rolling pin until reduced to fine crumbs.
Mix graham cracker crumbs, melted butter, 4 tablespoons granulated sugar and 1/4 teaspoon salt. Press into the bottom of 8 large cups (wide mouth 8oz jars are perfect). Refrigerate.
Preheat oven to 350 degrees F. Toast the unsweetened coconut flakes on a baking sheet in the preheated oven until golden, about 8-10 minutes. Remove from oven and set aside.
In a medium saucepan with a heavy bottom over medium-high heat, whisk together cornstarch and 1 cup granulated sugar and salt. Add egg yolks and whisk to combine. Whisk in coconut milk and half and half. Cook, stirring constantly, until bubbling and thick, about 4-5 minutes. Reduce heat to medium low and continue to boil for another 2-3 minutes. Remove from heat. Stir in lime zest, juice and sweetened coconut. Add 3 tablespoons softened butter and continue to stir until butter is incorporated. Let cool about 10 minutes.
Using a ladle, divide pudding evenly among the cups or jars and place a piece of plastic wrap directly on the surface of each pudding to stop skins from forming. Refrigerate until firm, at least 1½ hours or up to two days.
Before serving, whisk heavy cream and confectioners' sugar until soft peaks form. Dollop mixture on top of puddings and return to refrigerator for up to an hour. o Top with toasted coconut flakes and lime zest, and serve immediately.