Minecraft wiki entry for Flying_machines, associated text: Pistons are capable of pushing or (sticky pistons) pulling up to 12 blocks. These can simply be arranged in a line in front of the piston, but slime and honey blocks allow carrying along blocks placed to all sides of that line.
Various immovable blocks (notably obsidian and tile entities such as furnaces‌[JE only]) provide limits and frameworks.
Redstone Blocks: The key point here is while most other redstone power sources are partial blocks that get broken by pistons, this one can be pushed or pulled by pistons, so a machine can carry its own power source.
Observers are sensors for both the environment and adjacent parts of the same machine, which can also turn a change in one part of the machines into power elsewhere.
Slime and Honey blocks are similar -- both can "stick to" other blocks at their sides, carrying those along with them when pushed or pulled by a piston. Their differences are as follows:
They do not stick to each other.
Slime blocks are solid blocks, which can take and transmit a redstone signal, while honey blocks are transparent blocks which cannot.
Slime blocks bounce entities away from them, while honey blocks drag entities along with them (and prevent players or mobs atop them from jumping).