The chest is a block and tile entity that contains 27 slots. Prior to 1.13, chests could not be placed next to another chest which is already adjacent to a third on the x or z axis. However, chests could be placed using setblock or fill to occupy these states, in which case most of the chests will be invisible. Chests, like entities, will not be rendered when over 32 blocks from the viewing player. (Not confirmed)
The inventory it displays to a player in this order: -x, -z, self, +x, +z, possibly among others.
Trapped Chests Edit
Trapped chests behave like, or are, a sub-class to the normal chest. They have the same adjacency rule but only with themselves and not regular chests. They also emit a redstone signal strength equal to the number of players accessing it. However, they can still be accessed with a redstone comparator like an ordinary chest, without the player count affecting it. This is a property of comparators.
Ender Chests Edit
Ender Chests do not "double up" like the others and so can be placed in any physical relationship to one another. When an ender chest is opened they show the ender inventory of the player opening it, stored in the "player.dat" NBT file.
Chests have the correct hitbox for items to be rammed against so that ice speed can still apply to items while they can be picked up by hopper sorting systems. Additionally, due to the fact that chests are tile entities, they can not be pushed by pistons and therefore can be used to stop flying machines.