Make the custard: In a medium saucepan, whisk together the milk, granulated sugar, cornstarch, and salt over medium heat. Cook, whisking constantly, until the mixture begins to thicken and bubble, about 5-7 minutes.
In a small bowl, lightly beat the egg yolks. Slowly add about 1/2 cup of the hot milk mixture to the yolks while whisking constantly to temper them, then pour the egg mixture back into the saucepan.
Continue cooking the custard, whisking constantly, until it thickens to a pudding-like consistency, about 2-3 minutes. Do not let it boil. Remove from heat and stir in the butter and vanilla extract until smooth.
Transfer the custard to a bowl, press plastic wrap directly onto the surface to prevent a skin from forming, and let cool to room temperature, about 45 minutes. You can refrigerate it to speed this up.
While the custard cools, make the whipped cream: In a large bowl, beat the cold heavy cream, powdered sugar, and vanilla extract with an electric mixer on medium-high speed until stiff peaks form, about 3-4 minutes. Refrigerate until ready to use.
Assemble the trifle: In a large trifle bowl or glass serving dish, spread one-third of the pound cake cubes in an even layer. Spoon one-third of the cooled custard over the cake, spreading gently to the edges.
Add one-third of the whipped cream over the custard layer, spreading carefully. Repeat the layering two more times, ending with whipped cream on top.
Cover and refrigerate for at least 2 hours, or up to 24 hours, to let the layers set and flavors meld. Just before serving, garnish with fresh berries or shaved chocolate.