Table from one object with column from another?

I am trying to create a checklist based on records from one object (let's call it criteria), with a set of company related yes/no completed checks.

Ideally, I would like to list every record from the "criteria" object with a column from an object that holds the company/criterion/completed, that then simply shows either completed or add proof.

So far, (and I may be overcomplicating this), I have a company object, a criteria object, and a progress object.

The problem is when creating pages, I have a user role connected to the company object and progress object.

What I don't know how to do on a page is:

1) create a set of incomplete progress entries for each new company added

2) list the criteria with the related progress status (with edit) for the logged in user/company