Timed for loop... HELP!

I was wondering if it is correct.

No. The middle portion of the for statement is a while clause - execute the body of the statement while the clause is true. In your case, i will not be greater than or equal millis() + 500, so the body will never execute.

A while statement seems more appropriate for what you want to do.