how many possible fuse bits are there for a given chip ,say the uno or mega ?
Again a specific AVR datasheet is the bible to learn about it's specific fuse bits. Most all the bits are grouped into either two or three fuse bytes (depending on the specific AVR chip in question) named hFuse, lFuse, and eFuse. The only exception might be the Lock Bit fuse which may be a 'standalone' bit not grouped with any of the other fuse bytes, but that has never been totally clear to me.
Anyway the arduino core file boards.txt contains the proper value for the fuse bytes to be used with each of the defined board types that the IDE is setup to work with. The only time the Arduino IDE writes fuse bytes to the chip is when performing the burn bootloader operation from the IDE. Uploading sketches does not change or check fuse bits. Of course if you use AVRDUDE program in standalone command line mode you can read or write any fuse values you wish to, but caution some fuse settings can effectively 'brick' the chip requiring a HV (high voltage) programmer to undo that situation.
Often confusing is that any specific fuse bit option is enabled (turned on) by setting it to a 0, as due to the type of EEPROM memory used in the AVR chips a totally erased chip has all fuse bits set to 1 (off) condition.
Also some bits in the fuse bytes are not used and often shown or read back as zeros with AVRDUDE which can be confusing also.