In a medium saucepan, mix together the milk and salt and heat on medium-low until just beginning to ripple under the surface.
Meanwhile, whisk together the sugar, cocoa powder, cornstarch, and instant coffee (if using) in a bowl until evenly combined. Add the egg yolks and egg to the sugar and whisk until thick and ribbon-like (around 1 to 2 minutes).
Temper the eggs by gently stirring a bit of the hot milk into the egg mixture little by little until 2/3 of the milk has been incorporated. Pour the tempered eggs back into the saucepan with the remaining milk, then place the pan onto the stove over medium-low heat.
Whisk the custard constantly until it begins to thicken, scraping the sides and bottom so it cooks evenly. After a few minutes, it will begin to boil. Once you see the first bubble, whisk for 10-15 more seconds, then immediately scrape the pudding into a separate bowl to cool. While the pudding is still hot, stir in the butter and vanilla until well incorporated. Press a sheet of plastic wrap directly onto the surface of the pudding to prevent a skin from forming, then refrigerate for at least 4 hours, until cool.
Remove the plastic wrap from the surface of the pudding and whisk well to break up any lumps. If you wish to have a lighter pudding, fold in the 8 ounces of whipped cream, or you can use it as an extra layer in the dirt cake.
Crush the Oreos in a food processor until pulverized into a fine crumb. If preferred, you can leave the Oreos in larger pieces for more texture.
To layer the pudding, spoon around 1 tablespoon of Oreo crumbs into the bottom of a serving cup, then scoop 2-3 tablespoons of pudding on top. Smooth the pudding into an even layer, then continue the alternating the Oreo crumbs and pudding until the cup is full. Finish the cups with a layer of Oreos and gummy worms. Use immediately or refrigerate until ready to serve (the pudding will last up to 3 days in the fridge).