delay(3); //delay to allow buffer to fill
Crap code.
readString += c; //makes the string readString
That comment is nonsense. The String was already named readString.
servoname = readString.substring(0, 2); //get the first two characters name
servo2 = readString.substring(2, 5); //get the next three characters
Those are stupid things to do after reading 1 character.
int n1 = servoname.toInt();
03 is NOT the name of a servo.
Robin2 has a really nice tutorial on reading serial data. It does NOT use Strings. It would let you send "<1,45>" to move the 2nd Servo instance to 45 degrees, instead of having to pad with 0s. Find it. Read it. Embrace it.
The real advantage of his way is that you don't have to embarrass yourself posting stupid comments about delay() being a good way of ensuring that serial data has time to arrive.
(And, a point of reference, zoomkat was absolutely welded to the idea that delay() was the only possible way to read data, despite all of our efforts to broaden his horizons. I would NEVER use code he wrote.)