Hi,
OK. The users can get (almost) all this information by looking in the workflow log.
Except for the set of current agents and the set of could-have-been agents.
This doc shows you how to make a simple report showing all the current agents of a workitem:
Create a 'Workflow Agents' Report in 5 Simple Steps
For the agents who 'could have' approved a workitem, I think (like I said above) your best bet is to store the set of responsible agents in the workflow, and get your report to retrieve them from the container afterwards.
Unless someone has a better idea..!
good luck
Paul