I'll try for this.
First, you will need to decide whether a flat model will be suffucient for the situation or you are going to need one EAV. With EAV model, you'll have the flexibility of adding extra attributes to your collection in future without any ALTER table statements but it will be a little more complex than Flat model to implement.
Now your data (name, url key, meta data etc) will become the properties of your model. They will be columns in case of a flat model and attributes in case of an EAV model.
Upto this part, nothing should be tricky to implement with some basic knowledge of Magento. After that, to hold the relationship between your collection and products, you'll need a separate table. You can show the products grid in same way as it's done with individual categories and with the help of some JS, you can easily POST the selected products with your collection object data for processing.
This way, you can achieve what you are looking for without modifying anything in the products or categories themselves. To get a better idea about implementing relationship between collection and products, you can take a look at catalog_category_product
table in your Magento database.
Also, in order to have the working model of URL key, you will need to hook into controller_front_init_routers
event for targeting the request to your controller. You can do it in any other way, I just thought it to be a little cleaner.