LCD over I2C not working with Timer2

You toggle the LED every 100 times into the ISR but you are printing 4 characters to the serial port at 9600 baud every single ISR.
You can not do what you are trying to do in your ISR because it takes too long.

You are generating interrupts every 10 to 20 us and in the ISR you are trying to print characters that takes longer than the time between interrupts. At 9600 baud to print 4 characters, which is what are doing most of the time as you print two digits and then CR and then LF, takes around 4ms.
That won't work as nothing else gets any time to run. The code will exit the ISR and immediately get pulled back in because the ISR code spent more time trying to output serial characters than the amount of time until the next interrupt.

So you have both problems, no volatile declaration on the i variable and you are taking WAY too long in your ISR.

You can get it work with the Serial printing if you move the Serial.println() inside the if that only happens every 100 ISR events where you toggle the LED.

--- bill