It does not matter how you program 'Bare Metal' in C or assembler.
For ease of writing C is definitely easier and should you get into performance issues you can always add assembler routines if needed. With gcc you can mix them without problems.
For programming the GPU you will have to dig in deep, adding an OpenGL lib is probably a lot easier.
In my experiments I am using a simple 16 bit framebuffer which is handled by the CPU only.
Another tip for writing and testing Bare Metal: get an USB to 3,3V serial adapter, connect it to the mini-uart pins of the Pi and use dwelch67 serial bootloader on the SD card and a terminal program on the PC. Also a sturdy switch in the power cable to the Pi is also a must! Without these you end up compiling, copying to the SD card, insert SD card in Pi, reboot and test, remove SD card, compile, reprogram, ad nauseum.. It will wear out the cardslot of the Pi and it is slow...