Yes, they are configured similar to how an MPage may be configured.
No, this is a different URL than what is configured in PrefMaint. The SMART app will receive the "normal" SMART launch. EG: https://{app_launch_URL}?iss=https://{fhir_base_url}&launch=123XYZ See http://docs.smarthealthit.org/authorization/#ehr-launch-sequence for more detailed workflow
It's actually more common for the person or organization writing the application to host it. So far, we only host the SMART applications that we provide or contribute to (If someone wanted us to host their app, we would need to do further investigation and discussion).
Profile (user), Patient, and Encounter are standard contexts that we provide. We also set the need_patient_banner context as described: http://docs.smarthealthit.org/authorization/scopes-and-launch-context/. There are a few non-standard contexts that may come back as well, like "tenant" which is often used to separate owning/contracting organizations, or to separate data (the iss parameter can be used for this as well).
The SMART app would receive the context in the authorization token response. Example here: (in "Response") http://docs.smarthealthit.org/authorization/#app-exchanges-authorization-code-for-access-token. These are FHIR resource _ids. So, to read the encounter your application would take the id returned and GET /Encounter/[id from token response]
App Info
Client Id: <my-client-id>
SMART Launch URI: https://<my-github-username>.github.io/smart-on-fhir-tutorial/example-smart-app/launch.html
Redirect URI: https://<my-github-username>.github.io/smart-on-fhir-tutorial/example-smart-app/
App Type: provider
FHIR Spec: dstu2 - "https://fhir-ehr.sandboxcerner.com/dstu2/0b8a0111-e8e6-4c26-a91c-5069cbc6b1ca"
Authorized: true
Standard Scopes:
online_access
launch
profile
openid
Patient Scopes:
patient/Observation.read
patient/Patient.read