Place an oven rack in the middle position. Preheat the oven to 350 degrees F.
Grease two 8-inch cake pans with nonstick spray and line with parchment paper.
In a medium bowl, whisk together the flour, cocoa powder, baking soda and salt. Set aside.
In the bowl of a stand mixer fitted with the paddle attachment, add the butter, coconut oil and granulated sugar. Cream together on medium speed, scraping the bottom and sides with a rubber spatula as needed, until pale and fluffy, 3 to 4 minutes. With the mixer running, add the eggs, one at a time, beating each until fully incorporated. Add the food coloring, vanilla and vinegar and mix to combine. Add the dry ingredients and buttermilk in 2 to 3 alternating additions and beat until just combined. Divide the batter between the cake pans, spreading it out evenly.
Bake until the sides of the cakes start to pull away from the pans and a toothpick inserted into the centers comes out clean, 25 to 30 minutes. Remove from the oven and let cool for 10 to 15 minutes in the pans, then invert onto racks and let cool completely.
Trim the top of each cake layer to make a flat surface. Place the bottom cake layer on a turntable or something easy to rotate. Dollop about a third of the Frosting on the cake layer and spread with an offset spatula in an even layer to the edge. Top with the second cake layer, cut-side down. Frost the sides and top, then decorate with chopped pistachios or sprinkles as desired. Use icing gel to write "Happy Birthday," if desired.
Cream together the butter and cream cheese in a stand mixer fitted with the paddle attachment until smooth. Add the powdered sugar, salt and vanilla and whip, scraping down the sides as necessary, until combined, light and fluffy, 4 to 5 minutes.