1. I wouldn't consolidate your components if you already have them broken out. You just need to assign them their specific content as they're traversed.
2. You could have a single top level page that holds the data, or you could also use m.global, add fields that are then accessible from anywhere later.
3. In the top level page you can maintain an array of traversed pages and if the user hits back, pop the last fields off to find the previous page until the stack is empty.
4. To me it sounds correct though there are some details unclear.
where do you have those interface fields / where are you attaching the new pages that you open?
If you attach the pages as child nodes of the top level page then your data will persist in that top level page and can be assigned out to initialize or update the child pages as they're selected.