Hi Matthew,
There are lots of parts to your question - its best you create separate questions for the individual problems. I'll do my best to point you in the right direction :-)
Non-AppWarp queries
For storing user data - you have the option of user App42 User management APIs. For storing User Ids and their friends - you can take a look at the Storage Service of App42.
http://api.shephertz.com/app42-dev/corona-backend-apis.php
There is also a corona sample that you can take a look at.
We are also working on integrating push notification service in our App42 corona APIs. We will update once its ready.
AppWarp specific queries..
For inviting online users - you can use the privateChat API of appwarp. Once both are ready to play - the sender can create the room and over private chat send the room id of the newly created room to the other person. Your approach regarding this looks fine to me.
There is a getLiveLobbyInfo API that will return to you all the users who are in the lobby. You can then compare this with your own friend list.
Orphaned rooms (empty dynamic rooms) are automatically deleted on the server after one hour.