You are correct, content types are only published from the /sites/contentypehub. You may want to consider an alternative approach using a site script that you apply post site creation using site design apply API. This then gets applied immediately so you can associate with document libraries,; the content type hub can take a while to distribute to new sites so no way to immediately associate with a doc library
Yes content types and CT publishing in Online works the same way online as it does on-premises. It is definitely better to create your content types that are needed in your tenant here and then publish them in the content type settings. Of course if they are not needed tenant wide, you can just create them in the site where you need them. Once published, the timer job that pushes them out runs about every hour but it might take longer. If you just need to get site columns everywhere, you can just create like a "base" content type with all your columns in it and publish, then just use the site columns where you need them.
Best Response confirmed by
Taen keren (Super Contributor)