So you are actually trying to translate a farm solution to a O365 friendly solution?
What can a provider-hosted app do?
A lot - BUT
A provider-hosted app isn't a generic replacement for farmsolutions. It's a solution with specific field of use. I like to compare them to custom webparts and application pages. It CAN do more, but likely there are better ways.
How to create elements (pages, webs, lists, etc.)?
- Declarative in a NCSS (No Code Sandboxed Solution)
- Quite limited but still valuable for most scenarios
- CSOM Provisioning
If you want to provision pages and webs, the answer is CSOM. It does not really matter if you package that CSOM in a provider-hosted- / sharepoint-hosted-app, a simple console application or something else.
The people behind Office PnP created a awesome provisioning engine that can consume declarative templates https://msdn.microsoft.com/en-us/pnp_articles/pnp-provisioning-engine-and-the-core-library.
How to get the SPContext?
It's ClientContext in CSOM and you will find here all answers http://sharepoint.stackexchange.com/a/134489/10271https://sharepoint.stackexchange.com/a/134489/10271
Get SPHostUrl in web application
The URL is given via the querystring when the app is called. Create a hello world app and you will see.
Web service
A provider-hosted app is essentially a IIS-hosted website that can make secure connections to sharepoint. You have to create at least that. If you need a webservice you can do so, but it's not necessary for a provider-hosted app.
You have to know that you can't call the webservice directly from SharePoint (cross-origin) but only in your providerhosted-app context.