The serial port is buffered and can keep 64 characters waiting for you to read them. After that they're thrown away. You're sending 81, so if you're not reading it fast enough, some will be dropped, as you observe.
The http activity you're doing takes time so if that code is running while your serial data is being sent, you're not reading the serial port, hence the overflow.
Also, your code assumes that when it starts reading the string, it will get all the characters in one pass through loop. You would be better off using the braces you've got for start & end markers to let you revisit loop multiple times until you have the whole packet.
Why does this happen and how can I make sure that I receive all data?
You are getting less than a full packet because your only criteria for stopping reading, or continuing to read, is that the incoming serial buffer is empty.
That is a piss-poor definition of a complete packet. Whatever is sending the data should do a better job, using start and end of packet markers, so the reader KNOWS when a packet starts and when it ends, and doesn't try to use a partial packet, so some mess that contains more than one packet, or parts of two different packets.
Great that actually works BUT it still brings me back to the original problem. It ONLY works when the Wi-Fi is disconnected (when the last "if" is not executed).
I still suspect that your wifi code takes long enough to execute that the serial port buffer is becoming full and throwing stuff away. You could try printing millis before and after it to see if that's true.
An easy (though unsatisfying) fix would be to reduce the amount of text you're sending. The Arduino doesn't need those long human readable identifiers like "lightlevel", make them substantially smaller.
Why not implement some handshaking between the TX and RX? Don’t do the http stuff in the RX until you receive the complete packet. Don’t let the TX send the next packet until it receives an “all clear” message from the RX.
When I am using serial I use a protocol for sending and receiving. I start off by using a sentence. The sentence has a beginning, an instruction word, word separators, and a sentence end. I use a "<" as a sentence start, ">" sentence end, "," as a word separator. I am able to receive 255 characters with accuracy.
Notice the if ( LIDARSerial.available() >= 1 ) is a departure from the if ( LIDARSerial.available() >= 0 ). I found with the Due, STM32, and the ESP32 using a 1 is more reliable then using a 0. The event trigger for the code works well in the 1mS to .25mS range.