How to work with TypedData?
Yes, this is a very broad question, so I can only offer a broad answer.

Typed Data is only really interesting for you if you are a module like Rules, a context/token system or something like that, that wants to work with any possible data structure on any level, with generic code. Like displaying that famous rules data selector based on getting an arbitrary object (or actually a definition object about that object that you will get at runtime) and all you know about it is that it is typed data.

For most other cases, like when you know that you are working with an entity, or a specific field, you want to work with more context-specific API's, if available.

You specifically mention entity forms, note that work there is still going on, but the idea is that editing fields should work the same for base fields as it does already with configurable fields, with widgets, whose configuration you will set in your baseFieldDefinitions() method. Support for that very recently landed, see the node title definition in Node::baseFieldDefinitions(). There is no change notice yet but the relevant issue is #2144919 Allow widgets and formatters for base fields to be configured in Field UI.