I still haven't tested coturn so i cannot answer all your questions, but here are a few tips:
STUN/TURN: In most WebRTC scenarios you should provide STUN and TURN. WebRTC peer browsers/apps will use ICE and decide, it is a little more complex but something basic is like this:
* First try to comunicate directly (ie. local private IP)
* If there is NAT is where STUN comes in, will try to Public IP.
* If nothing works (both peer are have "incoming" ports closed), then will try TURN.
In general in your WebRTC app you don't need nothing special for that to work, just provide your ICE servers (STUN and TURN).
The more "complex" part is that for security you need to use the REST API before you provide ICE servers. Your APP should make a request to your webserver (YOU need to validate user first, not the turn server); if valid, from your server (code not visible to user as you will use long term credential) you need to request the TURN server for ephemeral credentials. Then provide that credentials to your app and populate your ICE server TURN with those.
STUN is light and low bandwidth so in general there is no need to secure it.
I suggest you read about ICE and some examples to get a much better idea.