Preheat oven to 350°F (175°C) and position rack in center. Grease two 9-inch round cake pans thoroughly with butter or non-stick spray, line bottoms with parchment paper circles, and grease the parchment as well.
In a large bowl, whisk together flour, baking soda, baking powder, and salt until evenly combined. Set aside.
In a separate medium bowl, whisk sugar and eggs until pale and thickened, about 1 minute. Add oil and whisk until smooth. Stir in buttermilk, orange juice, orange zest, vanilla, and vinegar until well combined. Add orange gel coloring if using.
Pour wet mixture into dry ingredients and fold with a rubber spatula or mix on low speed until just combined. Do not overmix; a few small lumps are fine.
Divide batter evenly between prepared pans and smooth tops. Bake on center rack for 28-33 minutes, until toothpick inserted in center comes out clean and edges pull away from sides.
Cool cakes in pans on wire rack for 10 minutes. Run a thin knife around edges to loosen, then invert onto cooling rack and peel off parchment. Cool completely to room temperature before frosting.
In stand mixer with paddle attachment, beat cream cheese on medium speed for 2 minutes until smooth. Add butter and beat for another 2 minutes until fully combined and light.
Reduce speed to low and gradually add sifted powdered sugar in four additions, mixing after each. Add orange juice, orange zest, vanilla, and salt. Increase speed to medium-high and beat 2-3 minutes until fluffy and silky.
Place one cooled cake layer on serving plate. Spread about one-third of frosting evenly over top. Place second layer on top, flat side up. Apply a thin crumb coat over entire cake and chill for 10-15 minutes.
Remove cake from freezer and apply remaining frosting to top and sides in smooth strokes. Decorate with fresh orange slices, extra zest, or orange peel curls as desired.