In the first case, you say that the second string appears with no delay. Is there a chance that both strings show up 2 seconds after the routine runs?
My theory is that the usleep is preventing the fprintf code from running. After the usleep expires, both strings are sent to the display. There is an easy way to check this.
printf ("start\n");
usleep(5000000);
fprintf(lcd_name, string1);
usleep(2000000);
fprintf(lcd_name, string2);
With this, you should see the "start" on the console then 7 seconds later (not 5) you should see both strings on the LCD.