What is the difference between an Amazon dedicated instance and a dedicated host?
Dedicated Instances - You pay for the instances, but they get placed on whatever dedicated hardware Amazon decides.
Dedicated Host - You pay for the entire physical server and can, in effect, run instances on it as you please.
In both cases, its hardware that only your instances will use. However with dedicated hosts you have even more control than you would with dedicated instances. For example: Requesting a m4.large dedicated instance could end with your instance on a server exactly the size of an m4.large, so it'd be an old machine from years ago. Next time you reboot that instance it could be rebalanced onto new hardware. Maybe you have two dedicated instances that hammer the heck out of the RAM (making something up), they could end up on two different pieces of hardware or the same hardware.
On the flip side with a dedicated hardware, you pay for the hardware much in the same way you could pay for a leased server at a colo. You know exactly what the hardware is, you can run instances on it in the way you choose. You can leave overhead, or not. If you decide that instance X runs on your dedicated hardware, it will always run on that dedicated hardware in the way you've specified.
Dedicated instances ensure all of your instances run on single tenant hardware.
Dedicated hosts allow you more control on where your dedicated instances run. It's primarily to make "bring your own license" and compliance easier.