Hello, we have a dedicated article that explains how to do it, have you seen it yet?
Regarding your questions:
When you do an export of your documents you get a JSON file for each single It generates a ZIP archive containing a JSON file for each of the documents that are published in the repository. Only published documents are exported. Drafts and documents stored in a Release are not exported.
The JSON has all the fields that your documents, modeled by your custom types, use. This exact format is the same you should use when Importing documents. You can check out the full Import / Export reference to understand how each field should be modeled in the JSON.
In the first article that I shared with you before it shows you how you can achieve this. Basically you need to model your old Custom types into new ones that use new Slices, create simple published documents that use those Custom types, and them export them so you can see how the JSON is formatted, that way you can know how you'll need to write the import files.
The images should be imported as normally depending if you already have them in your repo, if they're in your machine or if they are online. Read Importing images.