Probably yes. CommandBuffers should work in GPU side after applied but it should be easy to deduce since blitting a quad through c# involves CPU as well therefore adding more overhead.
Using a CommandBuffer to blit won’t make much of a difference compared to a regular blit.
Setting a RenderTexture as a global variable is just a whole other thing than making a copy of it. Yes, that will be a lot faster, but it can indeed get modified later since it’s not a copy. You also don’t really need a CommandBuffer to do this. You can just set the target of the camera as a global variable before the rendering starts.
CommandBuffers don’t “work in GPU side”. They are just like everything else, but they allow you to insert actions in between the different stages of the Unity rendering pipeline.
Basically you batch commands to be executed by the GPU in bundles and can then submit them to the device from multiple places(this is where the worker thread comes into play).
This is also how Vulkan describes them. Unless you know that Unity does something different, this is pretty clear.
At any rate, if you need to grab the frame buffer at an intermediate point , e.g. like before any UI is rendered and provided the same camera renders UI, then you probably need a CB. Otherwise if it’s something simple, like jvo3dc said, use the Graphics API.
As for the camera target, there’s probably caching involved when asking for it, so it doesn’t change as the camera renders stuff. Not entirely sure about this though.