Serial buffer or faster processing?

However, for some unknown (at least to me) reasons, without that delay it doesn't work.

Serial data arrives slowly. If there is at least one character to be read, you read as many as 4 with just this snippet.

if (SerialUSB.available() > 0) {
    char1 = SerialUSB.read();
    if (char1 == 'L'){     // Codice "L" indica che voglio abilitare il led 
              delay (11);
              // leggo 4 caratteri (1 numero board, 2 numero riga, 3 numero colonna, 1 per indicare lo stato 0 o 1 per spento/acceso
              lednumber = "";
              lednumber += char(SerialUSB.read());
              lednumber += char(SerialUSB.read());
              lednumber += char(SerialUSB.read());

The delay() is needed to make sure that there is something to read. It is, of course, NOT the way to read serial data.

Oh, and using Strings is far slower that using strings (or, even better, in your case, byte arrays).