Which should be the perfect protocol and why?

aq_mishu:
OK, basically I wanted the GSM to be fully independent, because that's how i can leave the delay(5000) away from the main CPU.

Why would you use delay(5000) ?

You can manage timing without blocking using millis() as illustrated in Several Things at a Time

Edit to insert the correct link above. The following link was wrong - sorry for any confusion (senior moment :wink: )
Serial Input Basics

...R