Do you want to develop the App yourself? I would choose one of the many apps already available.
First you need to decide what protocol you want to use. Users could just use Skype to communcate from Skype to Skype. Downside/Upside is you don't need a server of your own.
If you want to setup your own server you could go for the widely used SIP-protocol.
Here is a list of server-software. You can check out the pages to see the hardware requirements.
Two of the most used VOIP-servers are Asterisk and Freeswitch.
With these servers you can use one of the many (SIP-)apps available.
Another possibility is choosing one of the many VOIP-providers on the internet. You need to choose one who does not charge you for calls between users. For example Voipbuster has free PC to PC (and App to App) calling. The mother-company of Voipbuster has many, many, many sub-companies who all have different rates of calling land-lines per country (which you don't need) but all provide free user to user calling. So you won't need your own server.
Before deciding which one of the options above you want, you need to test (and check) if your cell-provider does not block any of these protocols. Sometimes the provider blocks Skype and/or SIP-protocol via data because it hurts their business. In Europe there are laws (coming) against the blocking of these protocols but it's best to check beforehand.