What is the difference between usb root hub and usb host controller?
A regular USB hub is a USB device that can split USB traffic from one (upstream) link to several downstream ports, and mux the upcoming traffic from many ports into one upstream. To do so, each hub has special control pipe that controls port functions such as connect/disconnect/suspend/resume/disable etc. These functions are controlled via USB-type control transactions, which are directed to each particular port, all using USB packet-token protocol. This protocol works up to any valid level of hub stackup, and each port has well-defined status bits within USB responses.

A root hub performs similar function, except (a) the upstream is associated directly with host controller pipe/bus, and (b) various status bits of each ports are mapped directly into 32-bit registers in host PCI space. This is a piece of hardware. 

However, to maintain bit-wise compatibility between ALL ports in USB tree and provide universal access to all ports, the host controller driver software usually has a special layer that converts the register-based port control statuses (PORTSC) into standard USB port status format. This is sort-of illustrated in the following Microsoft documentation.



where the circled layer, I believe, provides this port status translation.
After that the system knows no difference between a root hub port and any regular hub port.