You can't use delay() in an interrupt. You can use delayMicroseconds() but delays of more than a few hundred microseconds are likely to cause problems.
It also looks like your full range of servo travel is two degrees: 100 to 102. What's with that?
Your ISR should be short. Put the rest in loop().
Try something like this:
volatile byte rpmcount;
unsigned int rpm;
unsigned long timeold;
int ledPin1 = 13;
int ledPin2 = 12;
int ledPin3 = 11;
int ledPin4 = 10;
#include <Servo.h>
Servo myservo;
int delayTimeF = 17; //delay between servo movements to control speed
int delayTimeM = 25;
int delayTimeS = 30;
int delayTimeVS = 40;
void setup()
{
Serial.begin(9600);
attachInterrupt(0, rpm_fun, RISING);
rpmcount = 0;
rpm = 0;
timeold = 0;
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);
digitalWrite(2, HIGH); //anemometer pin set high
myservo.write(0);
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void rpm_fun()
{
rpmcount++;
}
void loop()
{
if (rpmcount >= 5) {
//Update RPM every 5 counts,
rpm = 30*1000/(millis() - timeold) * rpmcount;
timeold = millis();
rpmcount = 0;
Serial.println(rpm,DEC);
}
if((rpm >= 0) && (rpm < 79)) {
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
myservo.write(0);
}
if((rpm >= 80) && (rpm < 150)){
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
myservo.write(30);
}
if((rpm >= 151) && (rpm < 199)){
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, LOW);
myservo.write(60);
}
if((rpm >= 200) && (rpm < 399)){
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin4, LOW);
myservo.write(90);
}
if((rpm >= 400) && (rpm < 550)){
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
digitalWrite(ledPin4, HIGH);
myservo.write(120);
}
}