You don’t distinguish properly between products/subscriptions and repositories.
A new product implicitly creates a new product subscription.
A new repositories belongs to a product and can only be used if the host has the matching subscription.
A content view contains a set of repositories. It’s just a view on this set of repositories. A host using that content view can only use those repositories in the view for which is has a subscription. All other repositories in the view for which the host does not have a subscription are not available.
A repository set contains all repositories available to a host by subscriptions. In the set you can enable or disable repositories which are part of the host’s subscriptions.
A activation key is used during activation/registration of a host. It assigns subscriptions and allows you to define a initial repository set, i.e. it allows you to enable/disable the repositories the host can use within those subscriptions.
The subscription manager’s subscription modules attach/list with default options only really work with RedHat subscription. For others, you can only see the subscription a host consumed or which are available:
# subscription-manager list --consumed
# subscription-manager list --available
You can then add subscriptions via attach using the pool id shown in the available list:
# subscription-manager attach --pool=...
Of course assigning subscriptions is much nice via foreman web gui.
Thus, to answer you question: yes, you have to assign the subscription to the hosts which need those repositories. Either directly to the host or via a host collection.
However, please note, that by default adding a subscriptions automatically enables all repositories in that product to the host. In other words: by default they are added as enabled to the repository set of the host(s).
This can be a problem in your case: your two repositories “Microsoft CentOS 7” and “Microsoft CentOS 8” will both be enabled on the hosts which may not be want you want. You either have to disable the repository in the repository set of the hosts or you use content views to make only the correct repositories available to hosts.