Generally speaking, there will be downtime. There are some 'home-grown' ways around this involving cloning servers and restoring delta data in your database after upgrading, but unless you just cannot live without a gap, it's a lot of work for not a lot of reward in my opinion.
The amount of downtime really depends on the size of your environment. One polling engine with NPM only could be less than 10 minutes. 6 polling engines with 4-5 modules could take a few hours aggregate depending on hardware, database connection speed, # of versions behind in the upgrade path, etc etc.
As for your upgrade, you can follow this link:
If you need a for-sure answer or this chart isn't clear, a ticket to support has always served me with a clear upgrade path.
As for best practices, the upgrades are very straightforward (unless you have FoE). But always always always backup your database before starting anything.