LED specs: DC Forward Voltage (VF) :
RED:2.3-2.6V,GREEN:3.4-3.8V,BLUE:3.4-3.8V
DC Forward Current (IF) : 350mA per channel, ~1050mA total
If all LEDs are on we need 32 amps at least.
.
.
.
How can I provide the appropriate voltage to each led color from a PSU?
You don't do it that way; you apply the current needed to supply the brightness you want, or you apply the maximum current and PWM - Pulse Width Modulate - each LED to get the apparent brightness you want.
I'll use shift registers to control all led channels. How should I connect them and with what type of transistors and be sure that I won't burn anything?
Like this:

The transistors are logic-level N channel MOSFETs and they should have a drain-to-source voltage rating > 5V. 12V would be nice.
The plan is for them to pass at least the LED If when they're on, and to keep the LEDS nice and bright I'd go for something with an Rds(on) of 100 milliohms or less. That way, the transistors will only be stealing about 12 milliwatts or less from the LEDs and they'll (the transistors) stay nice and cool.
You can use Digi-Key's filters to zero in on what you need and, if you actually want to build the thing, they've got the HC595s as well.
Here's how it works:
First, you send 96 bits of serial data into the shift register and then, after the 96th serial data clock, you assert the latch (frame) clock.
That'll broadside load all 96 of the data bits into their respective output latches, which will output the signals to the MOSFET gates, turning each of the 96 individual LEDs either on or off until the next frame clock comes along and updates the 96 LED array.
That way, as long as the frame rate is high enough there should be no perceptible flicker from the array.
So how to change colors?
By changing the relative brightness of the three colors in an LED RGB triad/pixel.
To do that, assume first a frame rate of 100 Hz to - for sure - get rid of any flicker.
100 Hz means that frame clocks occur every 10 milliseconds and then, since 96 bits have to be pushed into the shift register in 10 milliseconds, that means that the bit clock has to be going 96 times faster than 10 milliseconds, or 9600 Hz/bps.
Since there are 100 frames per second, and 96 bits per frame, that means that any bit in the array can be turned on or off 100 times per second, and that means that the longer it's ON, the brighter it'll be.
So, if all 3 LEDs in a pixel are OFF for, say, one frame, that pixel will be black but if they're all ON the pixel will be white. Over a period of several frames, however, the 3 LEDs can be turned on for some of the time and off for some of the time, changing their apparent relative brightness, and that way change the perceived color from that pixel.
POWER SUPPLY CONSIDERATIONS
PSU1 and PSU2 are the high-current supplies for the LEDs, and should be connected to the two columns separately, and then their grounds should be connected together.
Likewise, the arduino should be connected to its own supply and then the pair's grounds connected to the common ground.
In order to keep the noise on the high current supplies from getting into the HC595s in the columns, a separate 5 volt supply should be used for that logic, and if it's available from the arduino, that can be used.
