@NK
Answer to question 1 would vary on the basis of how you are separating objects of these 2 companies? However in both cases, you need to remove one of the verified domain from 1 tenant and add that to the other tenant.
Your scenario must fall under one of the below scenarios:
- You have one forest for each company
- Users are part of same forest but you are using different upn suffix to separate users of company 1 from users of company 2.
If you have separate forest for each tenant, you need to use 2 AD Connect Servers and sync users to their respective Tenant.
If you have single forest for both companies, you need to sync each object only once in an Azure AD tenant using AD Connect.
In this topology, one Azure AD Connect sync server is connected to each Azure AD tenant. The Azure AD Connect sync servers must be configured for filtering so that each has a mutually exclusive set of objects to operate on. You can, for example, scope each server to a particular domain or organizational unit.
A DNS domain can be registered in only a single Azure AD tenant. The UPNs of the users in the on-premises Active Directory instance must also use separate namespaces. For example, in the preceding picture, three separate UPN suffixes are registered in the on-premises Active Directory instance: contoso.com, fabrikam.com, and wingtiptoys.com. The users in each on-premises Active Directory domain use a different namespace.
Refer to Topologies for Azure AD Connect for more details.
For the second question, it should be absolutely fine to have a DC as a print server on Azure IAAS VM provided you have a VPN connection with your on-prem environment.