Hi,
1. While the product_code is not mandatory, if you don't specify it, the system will use the product_name as product_code. If the product_name is not specified either, then it will be refused. Also, note that if you import variants, you need to specify the product_code of the parent product in the order_parent_id column of the variants. So in that case, the product_code column will be necessary in your CSV.
2. The category_namekey will be generated automatically and is not visible on the interface anywhere so you don't have to take it into account.
3. Images can be placed in the "upload folder" that you configured in your HikaShop configuration. By default, it is images/com_hikashop/upload/
4. You need to create a product configured like you want. Then, when you are on the import screen, select that product in the template setting. During the import, all the columns not provided in your CSV but filled in in the settings of that product will be copied over to the imported products.
You can read more about all of these, with several of these points explained on this documentation page about the import system:
www.hikashop.com/support/documentation/73-hikashop-import.html
I would also recommend that you first create 2 or 3 products like you want and export them with the "export" button of the products listing.
That will give you a CSV file that you can base yourself on to know all the columns you can use (which could vary, based on what extra plugins you have installed, custom fields you've configured, etc) and what to put in each one.
Finally, note that you can also use RO CSVI:
rolandd.com/
It's an extension dedicated to import and export so it has more advanced functions.