Minecraft processes the world in "chunks" which are 16 x 16 x 16. These chunks are then put into "chunk columns" by the client and rendered onto your screen. 16 chunks make up one chunk column, which is where people get the notion that chunks are 16 x 256 x 16.
The only chunks that are 100% always loaded when a Player is online and in the Overworld are the 256 chunks inside a 16x16 grid of chunks centered around the worldspawnpoint. These chunks are called the Spawn Chunks. These chunks will always be loaded as long as a player is in the overworld. If the worldspawnpoint is directly in the middle of a chunk, there can also be a 17x17 grid of spawn chunks, centered around the worldspawnpoint. However only the center 12x12 (or 13x13 chunks, incase the Spawnpoint of the world is in the exact center of a chunk) will process entities, the chunks at the border will only handle block updates. When a player logs out or travels to another dimension, all loaded chunks will keep being loaded for 60 seconds prior to 1.9 or 10 seconds in 1.9 and above. Then, all chunks, including redstone, entities and game mechanics will stop working until a player logs back on. If during the 60 seconds period an entity moves through a Nether portal, all loaded chunks will continue to be loaded for another 60 seconds. That is a simple concept of Chunk Loading.
The most common method of making sure that chunks outside of the Spawn Chunks are loaded, is using a combination of the entity (usually an Item) through a Nether portal glitch, with a hopper in the chunk border between the spawn chunks or any other chunk that is always loaded. This hopper must face towards the chunk that needs to be loaded. This way, the game sees the hopper and checks the other chunk to check if there is a container. It notices it is not loaded, and loads the chunk. This method can be chained to eternity. This way of chunk loading has some very clear flaws: First, it's very tedious to link up the spawn chunks with every single chunk in the way to the destination, that can be thousands of blocks away. Also, unless a wood farm and an Iron Golem farm (Note that there are iron farm designs, which have to be loaded at all the time.) are existant on the world or on the server where chunks are to be loaded, it can be very hard to gather resources for such operation.
Lazy chunks and Entity processing chunks. Edit
If a single chunk is loaded in a world, it will not process any entities, but it will only handle block updates, and things like terrain population. For a chunk to become an entity processing chunk, it needs to be in the center of a 5x5 grid of loaded chunks. It is possible to use the method described above to create a grid of 5x5 loaded chunks.
Chunk loader designs Edit
Remote chunk loaders using doors Edit
Doors will tick themselves as long as they are part of a village. This allows for doors to remotely load chunks as long as the villager(s) that detect the doors are loaded. This does require additional chunk loading to make the villager's chunk entity processing.
Remote chunk loaders using glitched arrows Edit
Arrows continuously check the location of the block they are in, and this fact can be used to load chunks. If an arrow is shot into a dispenser, the arrow gets severely glitched and any player inside the section + a border of 3 blocks is able to pick up the arrow. If an arrow moves before the arrow is picked up, the arrows coordinates are set to NaN, which causes the arrow to teleport to the coordinates (0, 0). If the chunk at (0, 0) is an entity processing chunk, the chunk which fired the arrow becomes remotely loaded as a non-entity-processing chunk. Loading a 5x5 area of chunks around this chunk will allow it to process entities.