While loop to infinite

actually not. they are doing both the same: writing a value to a servo.

They are miles apart. In one case, you want to compute a value for a servo, and send that servo there, pronto.

In the other, you want the servo to take it's sweet time moving forwards, then backwards, through it's entire range of motion.

my code should write two values to two servos at a time.

But, not inside a for loop with delay()s.

ServoOne.write(onePos);
ServoTwo.write(twoPos);

Will get servo one moving, and then nanoseconds later (OK, maybe a couple hundred), start the other one moving, to new positions (or not new).

Then, the delay, to give the servos time to get to the commanded positions, comes from your calculating new positions, not from artificial delay()s.

You do not need to tell the servo to go to 0, 1, 2, 3, etc. You can tell it to go straight to 90. Then, if you think you need to wait until you are sure that it gets there, then you can wait.

The only reason for the delay in the for loop is to slow the servo down. Presumably, you will be constantly updating the positions of the servos, so that there is no need to wait for them to move a tiny amount.