can the arduino generate frequencies accurately?

delayMicroseconds will not overflow, though you can't pass an argument larger than 10000 or so. If you disable interrupts then delayMicroseconds will take the same time delay for each call, but millis() will stop and your serial input will not work.

If you leave the interrupts enabled then then every 1024 microseconds the timer0 interrupt will fire and delay you an extra few microseconds. Arriving serial characters will also delay you a similar amount.

I should probably write a library or something for this, but I generally reprogram one of the hardware timers to make a stable output frequency.