It depends what you want to transmit the data to.
If you get a GSM module such as a GE864
https://www.telit.com/en/products/gsm-gprs.php?p_id=12&p_ac=show&p=4 you can send and receive texts or you can use GPRS to send data to a web server, or send emails.
I think that you can connect to some ordinary mobile phones, which might be cheaper.
The 16F84A is a poor choice of processor. The 16F627A does more and is cheaper but is still not enough for what you want.
I suggest that you go for something much more powerful. For one thing, you have two data streams to deal with (GPS data and GSM data) and so two EUSARTS makes things a lot easier. Without two EUSARTS, you still have to be able to receive data from both the GPS and the GSM, so your program timing becomes very difficult.
Also, you may want a lot of data. The 16F84A has 68 registers. A text message is up to 160 characters long, and you need a phone number to send it to.
If you have GPRS connection you need to tell the phone the access point name and that is often 20 characters long.
I write the software for the vehicle trackers at
www.on-trak.co.uk and I use a pic24FJ64GA004. Programmed in assembly, it's got about half the program space used, but it does do lot more than you need.
In a prototype, I did get a text message using a pic16F688 but it was very limited for program and register space.
I suggest a PIC24FJ64GA002 as you can get that in DIP so you can put it in a socket.