Hi Partner,
As per my understanding,
you could just integrate all your 3 requirements in 1 portal, lets review your 3 requirements:
1. Assign web role with sufficient entity permissions to your logged in contacts, then create an entity list on any page for them to view other contacts info.
> Enable entity permissions for the list if only logged in contacts could view it.
Visitors:
Sign in contacts:
2. Create an entity form:
> set your Event entity as its source entity,
> with Mode option be set to Insert,
> Not enable entity permissions for the form
just as existing "Contact Us" entity form;(it will create a lead record)
In your scenario, you will create an event registration record.
Please read tutorial below for how to render an entity list and entity form on portal web page.
https://www.engineeredcode.com/blog/dynamics-365-portal-how-does-the-entity-form-or-entity-list-get-on-the-page
3. That might be based on how would you like to test,
> you could just create a single web page and test liquid js tag or fetchXML query on it, while not expose its URL on Portal web page.
> if you would like to test functionality such as knowledge articles or create case which are not easy to customize,
and don't want to disturb the normal use of customers/contacts, then you may need an extra portal for testing.
Finally, you could walk throught for whole process by Youtube channel below with its Session 3, 4, 6, 8.
https://www.youtube.com/playlist?list=PLs4RXIoRdB_wNutTjdvQIFNpw6O4teKtf
I wil reply the first time if you still have any doubt.
Regards,
Clofly