These funnels have a small inventory which they can pull items into from above (either from a container or free floating items), and push out of into another container attached to their tube.
Hoppers check what actions they can perform every 0.1 seconds. If there is at least one item in their inventory that fits in the container they point into, they push the first one into that. Then, if there are any items in the block above which fit in their inventory, they pull the first one in. By pointing multiple hoppers into each other, you can easily transport items horizontally.
If neither action is possible, they try again 0.1 seconds later. However, if they did push and/or pull an item, they go into cooldown for 0.35 seconds before their next attempt. This becomes especially important when stacking hoppers pointing into containers to their side.
In this setup, items always flow down to the bottom chest first, because the top hopper goes into cooldown after pulling the first item in, during which the bottom hopper pulls it down further before the top hopper "recovers" to push it into the chest it points to. Only when the bottom hopper fills up with items that don't fit in its chest and it can't pull items from the hopper above anymore, that one can start filling its chest.
Unlike most Redstone components that need a signal to perform an action, Hoppers work continuously (barring their cooldown) unless they are powered, which stops them from pushing and actively pulling items though, though other components can still push items into an inactive Hopper's inventory.
When placed in a Minecart, they work slightly different. Hopper Minecarts can't push items out, so they have to be emptied manually, by a regular hopper underneath, or by destroying them. They are however much more flexible in collecting items, as they can pull in free flowing items on top of a full block above them, whereas regular Hoppers only check for items directly on top of them or on partial blocks like slabs and farmland. Furthermore, Hopper Minecarts check for items twice as often and do not have a cooldown after a successful pull, meaning they can collect 20 items per second instead of the 2.5 per second of a stand-alone Hopper.