user choice for events
I'd say you need the views module.

I haven't used it with entity reference before, but I think you will need to set up a new view that displays events and use the relationship settings to link them to your city nodes.

If you don't actually need the cities to be nodes, you could make them a taxonomy instead which is much simpler to create a view for because you can make a field on your event that directly references the taxonomy.

Finally, to 'allow the user to choose' anything you need exposed filters in your view.