Adjust oven rack to middle position and heat oven to 350°F. Line standard-size muffin pan with baking-cup liners. Place chocolate and cocoa in medium bowl. Pour boiling water over mixture and whisk until smooth. Set in refrigerator to cool completely, about 20 minutes.
Whisk flour, sugar, salt, and baking soda together in medium bowl; set aside. Whisk oil, eggs, vinegar, and vanilla into cooled chocolate-cocoa mixture until smooth. Add flour mixture and whisk until smooth.
Divide batter evenly among muffin pan cups. Bake until cupcakes are set and just firm to touch, 17 to 19 minutes. Cool cupcakes in muffin pan on wire rack until cool enough to handle, about 10 minutes. Carefully lift each cupcake from muffin pan and set on wire rack. Cool to room temperature before frosting, about 1 hour.
In a medium saucepan combine the sugar, flour and salt. Gradually whisk in milk. Cook over medium heat, stirring constantly, until mixture starts to boil. Cook for 2 minutes until thickened.
Remove from stove. Whisk ¼ cup of the hot mixture into the beaten egg yolks, and immediately add egg yolk mixture to the hot mixture in the saucepan. Cook for 2 more minutes, stirring constantly. Remove from heat and add butter and vanilla. Transfer pudding mixture to a medium bowl. Cover with plastic; refrigerate until well chilled, about 1 hour or overnight.
When pudding is chilled, whip cream to form soft peaks and gentle fold in to pudding. Keep covered and chilled until ready to use.
Place half of the chocolate in a small mixing bowl. Heat heavy cream on medium high heat until it comes to a boil. Remove from heat and immediately pour cream over chocolate and stir until chocolate is completely melted. Add remain chocolate and stir until chocolate is completely melted.
Let ganache cool to room temperature, stirring often, 45 minutes to 1 hour. Beat it with a mixer on medium-high speed until thick and fluffy, 2 to 4 minutes.