Problem - Read from Closed Loop Stepper Motor while Rotating

Does it stop lagging if you comment out this line?
attachInterrupt(digitalPinToInterrupt(ENCA),readEncoder,RISING);

If it still lags, the problem is in displaying text for each step of the stepper and not in measuring the position.

Similarly, try moving the output out of the loop:

  for (int i=0; i <= 400; i++) { //This loop will perform one revolution
    digitalWrite(Ena, LOW);    // optimize values in the for loop to get the highest torque possible
    
    digitalWrite(Pul, HIGH);
    delayMicroseconds(1000);
    
    digitalWrite(Pul, LOW);
    delayMicroseconds(1000); //original value 15000, min value 2000 ca.
  }  // Move the end of the loop up to here
    Serial.print(i);        //print and track step compared to measured rotation
    Serial.print(" : ");
    Serial.println(pos);
    
  // } <- No longer the end of the loop

If that stops the lagging, again it points to the problem being too much text output.