Where do I start if I want to write drivers for my Arduino and" some random program"?
You don't need to write "drivers". The Arduino knows how to talk to the serial port. If "some random program" does, too, great. Otherwise, forget it.
Can I use the existing USB port to communicate with "some random program"?
Can I use Firmata, Processing, or something else to easily communicate with, you guessed it, "some random program"?
If you use Processing or some other PC app, what is the Arduino going to be doing? Cheerleading?
Firmata is a way for applications on the PC to interact with the Arduino as a dumb extension. The Arduino is a slave, and can do nothing on its own.
What other questions should I be asking?
What are the winning lottery ticket numbers? The likelihood of getting a useful answer is about the same.
Quit beating around the bush and define this "random program" you want the Arduino to interact with.