Can anyone help me, table rows and populating from module and then reusing the rows

Yeah, the least complex solution may be to have them step through things 1 product at a time from the get go. Instead of having them select all the products at once to start, have row actions where they select which one they want to answer questions about. When they finish answering questions bring them back to the beginning so they can select another product.

There are ways to guide them through it where they mass select then step through one by one, but it takes a bit more logic. It’s something along the lines of adding a UI only field to the adopted model (one with only the 4 selected products) that gets updated. When it’s updated, have a branch that checks to see if its the first row (a 2nd UI only formula field with {{index}} to see row #). If it is then run whatever actions you have for determining what questions to show using that row as context & remove the row. After they finish answering have the same action run that updates all the UI formula fields, which will get the loop going again.