The servo library is pretty robust as to what gets sent to a servo. Do some actual testing with a servo to see what causes a problem and what doesn't.
And the relevance of this statement to atoi processing strings to ints is?
I think no matter what is sent, the position control signal actually sent to the servo can only be 0-180.
Well, the compiler will certainly complain if you pass anything but an int to servo.write().
The "started && ended" is probably a dead end for your project, what ever it is. If the three character position value can be incorrectly sent, so can the start and end delimiters.
But, the use of delimiters means that you don't have to send three characters to set the position to "90" or "5". You send only as many characters as are needed to represent the value to send the servo to, plus the delimiters.
The delimiters also offer an opportunity to do some error checking. A serial stream composed of "100110120" might be 100, 110, 120. But suppose one of the characters got lost, and the stream consisted of "10110120". There is never a way to get back in sync. If the serial data consisted of "<100><110><120>, the actual values are easy to pick out. If a digit gets lost, and the serial data instead contained "<10><110><120>", one missing character won't result in the expected value, and the servo will go to the wrong place, but then it will go back where it is supposed to go.
Aslo, with start and end of packet markers, additional data, like string length up front, and CRC on the end is easy to add. Without delimiters, it is much more difficult.
Why spend $600 for a fluke multimeter when a harbor freight $4 multimeter will perform acceptably well for the intended use.
Neither of us knows whether OP needs the fluke or the junk. However, the increased cost of doing the code right is not quite as high as your multimeter example would infer.