Introducing the LiquidCrystal NKC Library!

Indents
All the examples have indents of 2 spaces.
The LiquidCrystal_NKC.cpp and LiquidCrystal_NKC.h have real tabs, in my browser I see this:

Wire library clock speed
The 10kHz works for an Arduino Uno, but it is not 10kHz. It could be a very high or very low value.

Wire library writing data
A delay between Wire.write() is nonsense code. All the delays will be added together for a delay before the I2C transaction and the delay after the Wire.endTransmission() is after the I2C transaction.

The Wire.beginTransmission() initializes variables and clears a buffer.
The Wire.write() puts data in a buffer.
The Wire.endTransmission() does the complete I2C sessions (using the data in the buffer).

I'm not saying that the display can work without the delays (probably not), but put them before Wire.beginTransmission() or after Wire.endTransmission().
What you do is waiting to put data in a memory location, similar to this:

byte buffer[3];

delay(1);
buffer[0] = 0xAA;
delay(1);                // wait until buffer[0] is really 0xAA
buffer[1] = 0xBB;
delay(1);
buffer[2] = 0xCC;
delay(1);
someCommunicationFunction( buffer);
delay(1);

What you really need is a delay after the command is given, or maybe a delay before starting with the new command (depending on how your code is organized).

byte buffer[3];

// delay(3);     // some extra time, so the device is no longer busy
buffer[0] = 0xAA;
buffer[1] = 0xBB;
buffer[2] = 0xCC;
someCommunicationFunction( buffer);
delay(10);       // give the device some time to execute the command

The problem with nonsense code is that others will copy it, and that I have to spend years trying to tell that it is wrong.
Try this for example: https://www.google.com/search?q=site%3Agithub.com+issues+wire.requestfrom+koepel :scream:

Serial/UART gap between bytes
If you really want a gap between sending Serial/UART data, then you have to use the flush function. I don't thing it is needed, but perhaps for testing:

Serial.write( 0xAA);    // put 0xAA in the buffer to transmit it
Serial.flush();         // wait until it is transmitted
delay(1);               // a gap of 1ms between the data bytes
Serial.write( 0xBB);
Serial.flush();
delay(1);

Did you know that a gap between the data bytes is the same as a extra long stop-bit ?