Chunks make up one chunk column, which is where people get the notion that chunks are 16 x 256 x 16.npoint is directly in the middle of a chunk, there can also be a 17x17 grid of spawn chunks, centred around the world spawn point. However only the centre 12x12 (or 13x13) chunks, in case the Spawnpoint of the world is in the exact centre 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 moving an entity (usually an Item) through a Nether portal, 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 times.) are existent 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.
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
Remote chunk loaders using nether portals
When an entity enters a nether portal, it will load a 5x5 area of chunks having the chunk containing the portal in the middle. The outer chunks are lazy chunks. Using this mechanic it is possible to create machines that send items one way and the other to permanently load the chunks. It is the only design that works in Minecraft 1.14+.
Remote chunk loaders using doors
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
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.