Hi, interesting project idea!
In case of simulating a controller towards a console it depends on the protocol and submission speeds.
Generally, you can control the GPIO pins of the ControlPins via the SPI interface of the Raspberry. As long as SPI is fast enough for your use case, things should work.
Hope that helps!
I had tried all 3 methods on my pi 3. I used the manual cmake steps, I had tried the wget install.sh method, and I had also tried the GUI option in the retroarch "optional package" menu. I ran into no errors during any method, but nothing worked. Nothing was responsive in jstest. When performing the GUI option pi 2.5, it worked. (I didn't try other 2 methods on the pi 2.5 as my first attempt worked).
I think its my pi. I bought it a few years ago and this was my first time trying to use the GPIO headers. I downloaded a pigpiod GPIO test script and it identified some of my pins as bad. I think I'll grab a pi 4.0 in the near future.
I made a video going over my gamepad design if anyone is curious.
I hope this helps you forward. I did a slight re-write for the driver myself as I wanted all the Atari 2600 switches to provide their original functionality. Which isn't straightforward since official ControlBlock driver doesn't support switch where both on and off indicate certain state (e.g. on -> colorTV, off B&W). I suppose I could clean up my code a bit and put it up to github sometime.
The power switch on the ControlBlock lead to a small voltage-drop at the switching component (as does every electronically component). From other projects I know that especially additional USB devices can be problematic. I guess that when you disconnect, one or both USB devices (SSD, converter) the under voltage disappears. Alternatively, you could get an active USB hub that powers the additional USB devices and keep the connection between the RPi and the USB devices.
It should always be possible to use the ControlBlock together with any USB controller. You would just need to run the input configuration for each device on EmulationStation. All controller types should be recognised and working afterwards.
Regarding your question about the need for an additional keyboard: What you would need to do is to configure the emulators such that you have full control with your arcade / gamepad controls only. That should be possible.