Board to board connection cable
Ribbon cable will likely be fine.  With high speed signals, route it as GND Signal GND signal GND through the cable to minimize crosstalk.  With standard ribbon cable connectors, this is really easy - put all the GND pins on one row and all the signal pins on the other row as the rows are interleaved into the cable.  Run several parallel wires for the 5V power, probably at least 4, 6 if you want to be more conservative.  Alternatively, you can do GND signal 5V signal GND and then decouple the 5V and GND right at the ribbon cable connector on both boards.  I would say if you have to run either USB or ULPI through the cable, running ULPI would probably be preferable, but you could run a simple test with a hacked up USB cable to see if you can get a reliable USB connection through a length of ribbon cable.  If you do run USB through the ribbon cable, run the wires right next to each other VBUS D+ D- GND with no traces in between the D+ and D- signals.  VBUS will do the same thing as GND for isolation, and the D+ and D- pins are differential so they need to be adjacent.