I2C LCD causes problems

OK folks, I loaded the code to the milling machine powerfeed this morning and happy to report it works just fine. I never could have done it without ya'll's help. THANK YOU!!

Now I do have a couple of questions. In the code below

char rpmStr[6];
        sprintf(rpmStr, "%4d", rpm);
        //dtostrf(rpm, 4, 0, rpmStr);
        lcd.setCursor(7, 0);
        lcd.print(rpmStr);
        lastRPM = rpm;

The line "sprintf(.......); " is the way @groundFungus wrote the code. I thought the"sprintf" why up in the "setup()" the "serial.begin(115200);" statement was made. BUT - when I comment that line out the code still works just fine. Why? Is the "serial.begin(115200);" needed for some reason?

Next question, the line "sprintf(rpmStr, "%4d", rpm);" works very good (I changed the "%5d" to "%4d" spacing the printed text where I wanted it. Since I don't fully understand (at all) the %5d" function, I tried the line that's commented out, which is the same as the ips printing section. The commented line also works, and I sorta understand it. Is there an advantage of one line vs the other line?

Again, allow me to say how much I appreciate the patience ya'll have shown helping and teaching me.