Does using "delay" in adruino programming blocking or slo my ir remote commands?

Using following code

#include <IRremote.h>
#include <Servo.h>
Servo leftRightservo;

const int receiver = 8; // Infrared receiver output pin( TSOP4838 )

boolean backHandRun = false;  // NEW
boolean foreHandRun = false;  // NEW
boolean stopHandRun = false;  // NEW


int IRstate;
int lastIRstate;

IRrecv irrecv(receiver);
decode_results results;

void setup() {
  Serial.begin(9600);
  irrecv.enableIRIn();
  leftRightservo.attach(10);
  int position = 90;

}

void loop() {

  IRstate = digitalRead(receiver);

  if (IRstate != lastIRstate) {

    if (irrecv.decode(&results)) {
      switch (results.value) {

        case 0x1FE50AF: // MENU
          Serial.println("MENU button pressed");
          backHandRun = true; // NEW
          foreHandRun = false; // NEW
          stopHandRun = false; // NEW
          break;

        case 0x1FED827: // PLAY/PAUSE
          Serial.println("PLAY/PAUSE button pressed");
          backHandRun = false;  // NEW
          foreHandRun = true;  // NEW
          stopHandRun = false; // NEW
          break;

        case 0x1FEF807: // PLAY/PAUSE
          Serial.println("PLAY/1 button pressed");
          backHandRun = false;  // NEW
          foreHandRun = false;  // NEW
          stopHandRun = true; // NEW
          break;
      }
      delay(10);
      irrecv.resume();
    }

  }
  lastIRstate = IRstate;
  foreHand();
  backHand();
  stopHand();
}
void foreHand() { // I want this to loop until i press a button on the remote

  if (foreHandRun == true) { // new

    leftRightservo.write(180);
    delay(1000);
    leftRightservo.write(0);
    delay(1000);
    leftRightservo.write(180);
    delay(1000);
  }

}
void backHand() { // I want this to loop until i press a button on the remote

  if (backHandRun == true) { // new
    leftRightservo.write(45);
    delay(500);
    leftRightservo.write(90);
    delay(500);
  }
}
void stopHand() { // I want this to loop until i press a button on the remote

  if (stopHandRun == true) { // new
    leftRightservo.write(90);

  }
}

I m encountering a problem that after initializing and getting first input from ir remote, arduino does not take second command from ir remote or it takes command slowly (like sometimes i need to press 5-6 times).

I have tested seperately ir remote with serial monitor and ir remote is working fine and i have tested all keys.

But when applying above code fully it does not take second command immedietly from ir remote.

Is there any other problem or using “delay” in program is blocking command from ir remote?

Yes, delay() is a blocking function. You have several delays for a second or half second where your Arduino will not be responding to anything; it will be delay()-ing.

After your "first command" your sketch will be running foreHand(), backHand() or stopHand(). In the case of foreHand(), it takes more than 3 seconds to complete this function while the Arduino will be doing nothing else. Similarly for backHand(), at least one second.

stopHand() should probably be okay, but I don't know how long leftRightServo.write(90) takes.

How to uses millis() for non-blocking timing tutorials:
Several things at a time.
Beginner's guide to millis().
Blink without delay().