Grease cake pans with oil or butter and dust with flour. Line the bottoms with parchment paper.
In a large bowl, mix sugar, flour, cocoa, baking powder, baking soda, and salt.
Add eggs, milk, oil, and vanilla. Beat on medium speed for one minute.
Stir in hot water or coffee (batter will be thin).
Divide batter evenly into prepared pans.
Bake until the tops are smooth and slightly domed, and a toothpick inserted comes out clean. For three 7" pans, bake for about 30 minutes. Adjust time based on your pan size.
Cool completely before frosting. Let cakes cool at room temperature, then wrap in plastic and freeze until firm (30 minutes or up to a few days).
Prepare the frosting:
Chill your mixing bowl and beaters in the freezer for 5 minutes to help the cream whip faster.
Pour heavy cream into the chilled bowl and beat until it starts to thicken. Gradually add 1/2 cup of powdered sugar while mixing. Continue beating until the cream is fluffy.
Transfer whipped cream to another bowl and refrigerate.
In the same mixing bowl, beat the cream cheese until smooth.
Add the remaining 1/2 cup powdered sugar and mix well.
Blend in the hazelnut spread and vanilla.
Add a scoop (about 1 cup) of whipped cream to the hazelnut mixture and blend slowly.
Fold in the remaining whipped cream gently with a spatula.
Frost your cooled cake as desired. There should be plenty of frosting for decoration. Freeze the frosted cake if you plan to add a chocolate glaze.
Garnish:
For a chocolate hazelnut glaze, combine 2 tablespoons of chocolate chips and 3 tablespoons of hazelnut spread in a bowl. Microwave at 50% power for 30 seconds at a time until mostly melted. Stir to combine.
Cool slightly, then pour over the frosted, chilled cake. Spread almost to the edge and top with chopped hazelnuts.
If desired, use remaining frosting in a piping bag with a 1M tip to add decorative swirls around the top. Top each swirl with a whole hazelnut.
Refrigerate the cake until ready to serve. Store leftovers in the fridge.