I would like a description that clarifies the concepts of what buffers and latches are and the difference between them. I'm asking for buffers and latches in respect to the 8086 microprocessor.
A buffer allows a signal to drive more inputs than it would by itself, or provides input protection / amplification. For the 8086, it's used in the output sense, allowing internal signals to be made robust to drive external devices.
A latch is a circuit to accept and store one or more bits, with a 1-to-1 input / output ratio. That is, it's not RAM. It differs from a register in that the storage takes place while a control input is at a particular level (0 or 1), while a register stores the input data upon receipt of an edge (rising or falling).
Latches are used with 8086s to store addresses and data, and are used instead of registers because they maximize setup times. That is, if data or addresses change internally while the latch enable is active, the data passes through immediately, while with a register it would not be available until after the appropriate clock transition had occurred. The early microprocessors used every trick they could to increase their usable speed, and this is one of them.
Buffers pass an input through to output after some propagation time, possibly increasing drive strength (increasing fanout).
Latches additionally add memory, to capture and persist the input value at some point in time (memory). This latching behavior is triggered by a third signal, control.
The control can be edge- or level-triggered. Edge-triggered latches freeze inputs when a control input transition occurs. Level-triggered control buffer the input until the control signal is activated, freezing the output level.