NASM (and other assemblers) usually have directives to organize you code in sections. These sections can be viewed as "segments" in real mode, but they are only a way to organize code.
Your operating system loads an executable in blocks. There is an executable block (.text), data blocks (.data, .rodata, .bss), and more. The keyword section tells the assembler what attributes these sections have - In systems like Windows and Unixes, the sections starting with a single dot are system sections with default attributes. You can create your own. In the old MSDOS, this dot is substituted by an undescore, like _TEXT, _DATA and _BSS (and, for some linkers you must tell the actual class: _TEXT has class CODE.
In a Master boot record, for example, you don't need sections. A single sector is loaded from disk via interrupt 0x19 at the segment 0, offset 0x7c00 (this is STANDARD), with CS=DS=ES=0 (why? Because BIOS Data area starts at segment 0x40, and can be accessed via offset 0x4xx, at segment 0). You can code your MBR not using sections (because you are not creating an EXE file!).
BTW, NASM allows use of sections for binary output. .text, .data and .bss are simply mixed, in that order in a flat binary file. Since there's no header, no metadata, the information on those sections are lost in the final file. So, why bother to use them?
If you are coding an UEFI bootloader (PE or PE+ executable, for i386 or x86-64 modes, respectifully), then sections are important, but not for single binary legacy master boot records.