The USB connection of the Arduino looks like a serial port to your computer (due to the FTDI drivers), so communication works as if it was a normal serial port.
Polling inputs/setting outputs etc. directly from a C++ program could be difficult. There is a firmware for the Arduino called Firmata which lets you use Arduino commands directly from Processing (for processing a corresponding Firmata library exists). So you upload the Firmata sketch onto the Arduino and can then control it directly from Processing. Perhaps something similar exists for C++, though under the hood of the Firmata solution the Arduino is controlled by sending serial messages, too (but kind of invisible to the user).
DigitalWrite() can be used on several pins, as it sets the pin high or low and it remains in its state until you call another digitalWrite() on it. If you have to do a digitalWrite() to several pins simultaneously (that means at exactly the same moment), then you can directly manipulate the ATMega's port registers (I think that's what they're called, never used them myself, but someone else will know better). So yes, this is possible too.
Depending on how much data has to be sent to the Arduino you could roughly estimate the delay for interactions by using the Baud rate. For example at 9600 Baud (1 Baud = 1 bit(second)), you could transfer 9600 bits (=1200 bytes) per second. Afaik, Arduino supports Baudrates up to 115200 Baud (=14400 bytes/second). That's quite an amount of data per second.
I hope this information is useful for you, be aware that an Arduino pin can source or sink a maximum of 40mA, so you would probably have to control your motors using transistors.
Sorry again, after a look on firmata website, I have more doubts!
Is it possible or not to use Arduino and possible firmata glue languages for:
Write a program in C++ or Perl, and include the firmata library for the specific language. Then, during the code, control the ON/OFF of the different outputs of the board.