<buffer> means the mapping is only effective for the buffer in which the command was run.
This is heavily used in ftplugins to create local mappings; e.g., you might want F8 to run
:!python3 % in python buffers but
:make in C buffers. You can make a single function that does this and bind it globally, but then you have to keep updating the function for new filetypes you work with.
Instead, bind F8 with a
<buffer> mapping in the relevant ftplugins. Then each new filetype gets its own binding, and the binding is located with all the other file-type specific settings.