For the pudding:
Whisk together the sugar, cornstarch, and salt in a large saucepan. Add about 1/2 cup milk and whisk to combine.
Gradually add the remaining milk and cream, whisking to combine, while cooking over medium heat. Bring the mixture to a boil, whisking constantly.
Let the mixture boil for about 30 seconds. Then add the peanut butter.
Continue boiling, whisking constantly, until thickened (about 1 minute).
Remove the pan from the heat. Stir in the butter and vanilla.
Transfer the pudding to 4-6 individual serving bowls or ramekins. Cover with plastic wrap, pressing the wrap directly onto the surface of the pudding. Chill at least 2 hours before topping.
For the topping:
Place chocolate and coconut oil in a medium microwave safe bowl. Microwave on 50% power for 1 minute. Stir. Continue to microwave on 50% power for 30 second intervals, stirring after each, until melted and smooth. Stir in coco powder and vanilla extract.
Pour about an 1/8" of chocolate over each pudding cup. Return to refrigerator and chill for about 30 minutes or until set.