I already posted the link to display library I am using, but here it is again.
That is NOT the link to the library, but there is a link there to the library.
Interestingly, on the library page, there are comments "works with ESP8266", but nothing about working with the ESP32. Makes me wonder why you think that it will.
void begin(bool avoidSPIinit=false);
So, the argument to begin() controls whether SPI initialization is avoided, or not.
We've already concluded that the call to the begin() method is required, so omitting it, resulting an a crash is expected behavior, so we don't have to go there again.
You need to summarize, as we are a long way from where we started. What value passed to begin causes what problems? You said my summary was wrong, so correct it.
Then, think about what doing, or not doing SPI initialization means. What pins, on the ESP32 are you using for the display? What pins are the SPI pins? What other pins are you using, for the GPS and any other stuff?
I'm suspecting a pin conflict.