The majority of your app can be rewritten however you want, using the tools and libraries you're used to. The SDK has a low overhead and is fairly agnostic as to how you actually write your apps. For example, you could add Redux or React-Router if you wanted to. You could even wrap an Angular app, or even just a simple jQuery app.
The basis of the Apps SDK tooling is create-react-app. If you're familiar with that tool, then you'll know how easy it makes to get started!
The SDK includes a fully isolated developer environment that runs on your localhost. This developer environment comes pre-built with mocked data (that you can customise); it has hot-reloading; enhanced error messages; and more.
This makes it really easy to go from nothing-to-something very very quickly (as the next section demonstrates!).
You can also develop your apps inside of a real Deskpro helpdesk. This involves running your app off of your localhost, but it actually runs inside of a real Deskpro instance. This is good when you want to preview how your app would behave once it's actually deployed.
Apps have access to the context in which they run. For example, if your app is set up to run in a ticket, then your app will be able to fetch information about the ticket it runs in, and any data related to that like the profile of the person who raised the ticket.
Apps also have some control over the actual interface. For example, apps can badge their icon with counts, they can listen to events, and they can intercept (and sometimes cancel) some actions like sending a reply.
Apps can store arbitrary data in a variety of ways. There's key-value pair data storage for simple cases, and custom fields can be used for more advanced cases.
Custom fields can be used to store relationships with external objects. For example, maybe you have an external issue tracking system where you want to associate external issues with tickets (concrete examples might be something like Trello or JIRA).
Your app can store these associations in a custom field which then enables advanced workflows with triggers, webhooks, and filters. For example "When the JIRA ticket gets resolved, resolve every linked ticket".
You can proxy API requests to external services through a local server-side proxy. This enables you to use APIs that are not CORS-compatible, or you might use the proxy simply to hide API credentials.