As Ken White explained, it's only used in 16 bit applications.
As a 16 bit pointer only can address 64 kb of memory, memory segments are used to
access more memory. The processor has four segment registers so it can have four active segments at the same time, a code segment (cs), a data segment (ds), a stack segment (ss) and an extra segment (es). Each segment is 64 kb, but they may address the same memory area or party overlap.
A near pointer is a 16 bit pointer inside the same segment. It's used as a pointer to data or code in the same module.
A far pointer is a 16+16 bit pointer consisting of a 16 bit segment offset and a near pointer. It's used as a pointer to data or code in a different module. When you use a far pointer to call a procedure, the segment part is put in the cs and ds registers (IIRC) to
access the code and data in that module.
The physical address of a segment+pointer pair is calculated as segment * 16 + pointer. That means that a 16 bit program can address 1024 kB of memory. To get
access to more memory the two techniques of extended and expanded memory is used. (Also the high memory technique to some extent, where the address would not wrap at a 1 MB barrier, but using the segment offset FFFF would give you direct
access to 65520 bytes of extended memory.)