Preheat the oven to 350°F (175°C). Grease and flour the 9-inch round cake pans and line the bottoms with parchment paper.
In a large mixing bowl, combine the flour, sugar, baking soda, salt, and cocoa powder for the cake. Mix well and set aside.
In another bowl, whisk together the vegetable oil, buttermilk, eggs, red food coloring, vanilla extract, and vinegar until smooth.
Gradually add the wet mixture to the dry ingredients, mixing until just combined. Do not overmix.
Divide the cake batter evenly between the two prepared cake pans.
Bake for 30-35 minutes, or until a toothpick inserted in the center comes out clean. Remove from the oven and let them cool in the pans for about 10 minutes. Then, transfer to a cooling rack to cool completely.
While the cakes are cooling, prepare the cheesecake layer. In a mixing bowl, beat the softened cream cheese and sugar until smooth. Add the eggs one at a time, mixing well after each addition. Finally, add the vanilla extract and flour, mixing until well combined.
Pour the cheesecake batter into a greased 9-inch round cake pan and bake in the oven at 350°F (175°C) for about 40-45 minutes, or until set and slightly jiggly in the center.
Turn off the oven and crack the door open, letting it cool for about an hour before transferring to the refrigerator to chill completely.
Once the cakes and cheesecake have cooled, level the tops of the red velvet cakes if necessary. Place one red velvet cake layer on a serving plate. Spread a layer of cheesecake on top, then place the second red velvet cake layer on top of the cheesecake.
In a mixing bowl, beat the softened butter for the frosting until creamy. Gradually add the powdered sugar, mixing until smooth. Add the vanilla extract and heavy cream (if using) to achieve the desired consistency.
Frost the top and sides of the layered cake with the buttercream frosting, smoothing it out with a spatula for an even finish.
Chill the cake in the refrigerator for at least 30 minutes before serving, to allow the layers to set together.