We try very hard to make the same programs usable on both physical and virtual robots. Probably the biggest change required is how you read from the gamepad/joystick controllers. Virtual VEX uses getJoystickSettings(joystick); and then read the values from the joystick variable. The VEX Cortex uses vexRT. Check out some of the sample programs (included with ROBOTC) in the Remote Control folder for both virtual and physical VEX.
You may also have to change motor and sensor port mappings, and values in your program that control how far to move, turn, etc.
We're working on ways to make robots more customizable (and hopefully one day to allow use of custom robot designs), but this feature is not available in any of our current virtual worlds.