Whisk granulated sugar, cornstarch, cocoa, and salt in a medium pan. Whisk in milk and yolks. Cook over medium-low heat, whisking, until thickened, 8 to 10 minutes. Remove from heat. Add chocolate and butter; whisk until melted.
Pour pudding through a sieve into a heatproof bowl set in an ice-water bath. To prevent a skin from forming, press plastic wrap directly onto surface. Refrigerate, stirring occasionally, until cold and set, about 40 minutes (up to 2 days).
Whip cream and confectioners' sugar in a medium bowl until soft peaks form. Divide cold pudding among 4 bowls, and serve with whipped cream.