fixups is just another name for relocation entries.
If you are new to relocation on PE, take a look at the official specifications.
Relocation entries tell the loader how to fix (hence the name fixups) the addresses in the compiled code.
The fixups
directive tell FASM that the section declared is the one where the relocation entry should be generated (automatically).
You can still add your data though, presumably the fixups are written before any user supplied data1.
The test if $=$$
check if the current address counter ($) is equal to the value of the address counter when the section started ($$).
If that is true, the user data will be written at the start of the section, hence no fixups have been generated.
The two dwords dd 0, 8
create an empty entry (a dummy entry).
The second DWORD specify the length of the whole entry including the 8 bytes header, a value of 8 specify no additional data.
I don't know why such dummy entry is created.
1 Just inferring this from the snippet, I don't know for sure.