The normal millis() counter actually increments every 1024 microseconds; slightly longer than a millisecond. What that means is is that trying to do something every millisecond will be slightly slow, and every 50ms or so, you'll skip a millisecond (millis() result will increment by 2 instead of 1)
If that's not acceptable, you can probably use one of the "timer2" libraries to get interrupts that show up exactly every millisecond (at the expense of losing two PWM outputs.)