What is the best way to facilitate bitcoin transfers between users of mobile and web applications? Curious how an application would exchange bitcoin between users. Can an application send funds directly from sender to receiver or sender to app-owner to receiver?
If the service controls the private keys (i.e. they are holding Bitcoin for their users), then they can maintain an internal database with each users balance and just update that database. The Bitcoin is only sent when users wish to transact with people who are not using that service. 

If the private keys are held by the user, then the most efficient thing to do would be to have the users transact directly with each other. This reduces transaction fees.