O que são aquelas letras no nome das ROMs? a, b, h, o, etc?

É o que se chama de "Good Codes", por causa dos "Good" sets, que são sets como GoodSNES, GoodGEN, GoodNES, etc. Cada letra indica uma versão alternativa da ROM, por assim dizer. Os códigos são:

[!] - este dump foi verificado como "Good". É a versão base da ROM.
[a] - dump alternativo. Feito por outro grupo.
[b] - bad dump. Provavelmente não funciona.
[c] - dump crackeado. Geralmente dumps de arcade, da placa CPS-2.
[f] - dump consertado (fixed) para rodar melhor em emuladores. Às vezes é derivado do [b], mas também pode ser uma versão específica para rodar em um certo emulador. Em jogos da Nintendo, também pode haver o (VC), que é um código que diz que essa ROM é para rodar no emulador do Virtual Console.
[h] - ROM hack. Geralmente tem um trainer para dar vidas infinitas, destravar todos os chefes, tem um seletor PAL-NTSC ou algo assim.
[o] - overdump. É um dump mal feito, onde o arquivo final acabou com um espaço maior do que o necessário. Por exemplo: uma ROM tem 256 KB, mas foi feito overdump e ela acabou ficando com 512 KB. Ela foi "dumpada" duas vezes no mesmo arquivo, uma atrás das outra. O jogo ainda vai funcionar, pois emuladores conseguem detectar isso. Mas não é a ROM ideal.
[p] - ROM pirata.
[t] - idem ao [h], mas é mais raro.
[T] - ROM traduzida. O formato é [T-]. Por exemplo: [T-Eng] é uma tradução para Inglês. [T-Bra] ou [T-Por] é uma tradução para Português, e por aí vai. O nome depois da língua é o grupo que traduziu a ROM. Ninguém sabe explicar direito a diferença entre T- e T+.
[-] - ano desconhecido. Raramente usado.
(M#) - multilínguas. Geralmente versões européias. O mais comum é (M3) - três línguas ou (M5) - cinco línguas.
(###) - checksum da ROM.
(??k) - tamanho da ROM em Kilobyes. Geralmente são versões diferentes da ROM, como por exemplo a ROM do Donkey Kong, que pode ter 16k ou 32k.
ZZZ_ - classificação pendente. Aparece mais em ROMs de computador.
(Unl) - é um jogo não-licenciado, o dito "jogo pirata". Um exemplo clássico é o Sonic 4 para SNES.
(VC) - versão da ROM que roda no Virtual Console, emulador oficial da Nintendo.

Códigos de país:

É um código entre parênteses que te informa o país daquela versão do jogo. Os códigos mais comuns são (U), (E) e (J).

(1) - Japão e Coréia do Sul
(4) - Brasil e Estados Unidos NTSC. Geralmente ROMs de arcade.
(A) - Austrália
(B) - Brasil. Geralmente ROMs de arcade.
(C) - China
(E) - Europa
(F) - França
(FC) - Canadá Francês
(FN) - Finlândia
(G) - Alemanha
(GR) - Grécia
(H) - Holanda (Países Baixos)
(HK) - Hong Kong
(I) - Itália
(J) - Japão
(K) - Coréia do Sul
(NL) - Países Baixos
(PD) - Domínio Público (Public Domain)
(S) - Espanha
(SW) - Suécia
(U) - Estados Unidos
(UK) - Reino Unido
(Unk) - País desconhecido
(Unl) - Jogo não-licenciado.
(World) - Mundial. Geralmente ROMs de arcade.

Se o jogo foi lançado em vários países, então junta-se as letras. Por exemplo, pode haver uma versão (UE), (JU) ou até (JUE).

Códigos específicos:
Game Boy
[C] - Color
[S] - Super Game Boy
[BF] - Bung Fix
Color e Super Game Boy você provavelmente já sabe o que são. "Bung" era um cartucho programável que podia conter várias ROMs (uma espécie de flashcart). Então, Bung Fix eram ROMs alteradas para funcionarem nesse cartucho.

Super Nintendo
(BS) - ROMs de Broadcast Satellaview
(ST) - Sufami Turbo
(NP) - Nintendo Power
As ROMs de Broadcast Satellaview eram transmitidas por um serviço de broadcast da Nintendo no Japão, e só ficavam disponíveis durante certas horas do dia. As ROMs também podiam conter narração e outras coisas. Nem todas as ROMs deste tipo foram dumpadas, e também as vozes (se haviam) foram perdidas. Recomendo ler sobre o Satellaview na internet, é uma leitura interessante. O game mais famoso provavelmente é o Radical Dreamers, a "sequência" de Chrono Trigger.
Sufami Turbo era um acessório da Bandai que permitia conectar dois cartuchos especiais ao SNES, para que trocassem informações entre si. Os jogos da série SD Gundam: Generations usam este acessório.
Nintendo Power eram versões exclusivas para assinantes da revista Nintendo Power.

Sega Genesis/Mega Drive
(1) - Japão
(4) - Estados Unidos
(5) - NTSC apenas
(8) - PAL apenas
(PAL) - PAL apenas
(B) - Brasil
[c] - checksum
[x] - checksum ruim
[R-] - países

NES/Famicom
[PC10] - versão Playchoice 10
[VS] - versão Versus
O Playchoice 10 era um arcade que rodava cópias exatas de jogos de NES. O nome era esse pois você podia escolher entre 10 jogos em uma lista. Você pagava 25 centavos de dólar por 3 minutos na máquina.
O sistema Versus é similar ao Playchoice 10, mas permitia que jogadores se enfrentassem.

Neo Geo Pocket
[M] - Mono apenas

Colecovision
(Adam) - versão ADAM

Lembrando que todos esses códigos são para os GoodSets, que eram os sets predominantes até o final da década de 2000. Hoje em dia já existem outros sets, como No-Intro.

Então qual ROM escolher?
Escolha sempre a ROM verificada, que é aquela com o [!].

Qual a diferença entre as extensões de ROMS de SNES e Mega Drive? SMC, SFC, SWC, FIG?
Isso depende do dumper que foi utilizado no jogo.
SNES:
SMC - Super Magic Card.
SWC - Super Wild Card.
FIG - Super Pro Fighter/Fighter Pro X/Double Pro Fighter.
SFC - na verdade não é um dumper específico, SFC é de "Super FamiCom".
Mega Drive:
SMD - Super Magic Drive.
BIN - é um dump limpo, sem adição de headers e nem reorganização do conteúdo. Não é o mesmo .bin utilizado em dumps de CDs, diga-se de passagem.

Emuladores não se importam com a extensão (o formato de todos é igual), mas os mais aceitos são o SFC e o SMC (SNES) e BIN (Mega Drive). Em dumps antigos você ainda acha .FIG, como no dump mais antigo de Final Fantasy 6.

O que é um dumper?
Dumper é um dispositivo, geralmente no mesmo formato de um cartucho, utilizado para copiar os jogos para outra mídia. Na época, copiava-se para um disquete, ou até mesmo direto para o computador, através da porta paralela. Também chamado de copiador (copier). Esse tipo de dispositivo não era tão comum no Brasil, pois já recebíamos os jogos pirateados aqui, mas era tão comum nos EUA e Japão (sim, tinha pirataria a rodo no Japão) que alguns jogos já vinham com rotinas para detectarem esses dumpers. Perderam a sua função a partir da época dos jogos de disco, pois aí se usava o próprio computador para dumpar os discos. Mas ainda existem dumpers para jogos de DS e 3DS.

Qual a diferença entre GoodSet, No-Intro, Redump e outros?
O GoodSet pega todos os dumps alternativos da mesma ROM e os coloca no mesmo pacote. Por exemplo: o pacote da ROM do Donkey Kong Country 1 para SNES, vem com as seguintes ROMs:

Beat the Donkey Demo (DKC1 Hack).smc
DKC Reloaded v0.32 (DKC1 Hack).smc
Donkey Kong Country (E) (M3) (V1.0) [!].smc
Donkey Kong Country (E) (M3) (V1.0) [b1].smc
Donkey Kong Country (E) (M3) (V1.0) [b2].smc
Donkey Kong Country (E) (M3) (V1.0) [f1+1C].smc
Donkey Kong Country (E) (M3) (V1.0) [f1+2C].smc
Donkey Kong Country (E) (M3) (V1.0) [f1+3C].smc
Donkey Kong Country (E) (M3) (V1.0) [f1].smc
Donkey Kong Country (E) (M3) (V1.0) [f2].smc
Donkey Kong Country (E) (M3) (V1.0) [f2][t1].smc
Donkey Kong Country (E) (M3) (V1.0) [f3].smc
Donkey Kong Country (E) (M3) (V1.0) [f4].smc
Donkey Kong Country (E) (M3) (V1.0) [f5].smc
Donkey Kong Country (E) (M3) (V1.0) [T+Bra1.00].smc
Donkey Kong Country (E) (M3) (V1.0) [T+Bra_TOM].smc
Donkey Kong Country (E) (M3) (V1.0) [T+Spa_hrtoledo].smc
Donkey Kong Country (E) (M3) (V1.1) (VC).smc
Donkey Kong Country (E) (M3) (V1.1) [!].smc
Donkey Kong Country (U) (V1.0) [!].smc
Donkey Kong Country (U) (V1.1) [!].smc
Donkey Kong Country (U) (V1.1) [T+Bra_TOM].smc
Donkey Kong Country (U) (V1.2) (VC).smc
Donkey Kong Country (U) (V1.2) [!].smc
Donkey Kong Country (U) (V1.2) [T+Rus].smc
Donkey Kong Country - Boss Blitz (Hack).smc
Donkey Kong Country - Competition Cartridge (U) [b1].smc
Donkey Kong Country - Competition Cartridge (U) [h1C].smc
Donkey Kong Country - Competition Cartridge (U).smc
Kremling's Revenge, The v1.0 by Preposterify (DKC1 Hack).smc
Super Donkey Kong (J) (V1.0) [!].smc
Super Donkey Kong (J) (V1.0) [b1].smc
Super Donkey Kong (J) (V1.0) [f1].smc
Super Donkey Kong (J) (V1.0) [f2].smc
Super Donkey Kong (J) (V1.0) [h1].smc
Super Donkey Kong (J) (V1.1) (VC).smc
Super Donkey Kong (J) (V1.1) [!].smc
Super Donkey Kong - ONG (Hack).sfc
Super Donkey Kong - Sample (Hack).sfc
Super Donkey Kong by mudlove90 (Hack).sfc

Por aí você consegue ver que são uns 20 dumps do mesmo jogo, sendo que só uns 3 ou 4 são realmente versões diferentes. Além disso, as versões americana e japonesa vêm no mesmo pacote (Super Donkey Kong é a versão japonesa de DKC). O objetivo do GoodSet era catalogar todos os dumps de ROMs, e não apenas os verificados. Mas isso não aumenta demasiadamente o tamanho dos pacotes de arquivos? Não, pois como as ROMs só têm umas pequenas modificações entre uma versão e outra, os programas de compactação reconhecem isso e conseguem compactar os arquivos sem perder quase nada de informação. Neste mesmo exemplo, o pacote (.7z) desta ROM de DKC 1 tem 20 arquivos de 4.4 MB, mas o arquivo compactado só tem 2.8 MB. É como se fosse só um arquivo (a ROM base) compactado uma vez, e o resto das versões só têm alguns bytes de diferença.

As ROMs No-Intro não se importam em catalogar os dumps. Vem só a versão limpa e verificada de uma ROM. Não vem hacks, traduções e outras coisas. É a versão limpa e só.

Mas então, qual dump escolher?
Se for usar o GoodSet, escolha o dump verificado [!], da língua que você quer, e na versão mais atualizada. Isso é importante em alguns casos, pois ROMs de versões anteriores podem conter bugs ou não funcionar direito em emuladores. Se eu não me engano, a ROM da versão 1.0 de DKC2 não funciona direito em emuladores pois um dos barris em uma das fases é incontrolável (funciona num console normal). Então você teria que usar a versão 1.1 ou 1.2 se quisesse realmente terminar o jogo. Em qualquer outro caso, escolha No-Intro.

De onde vem o No-Intro?
Diz-se que esse set veio da época das ROMs de GBA, pois os grupos que dumpavam essas ROMs tinham a mania de colocar aquelas introduções com musiquinha e menu animado. Alguém não gostou disso e resolveu juntar todas as ROMs limpas em um único set. Por isso, "No-Intro" (sem intro). Se quer ver como eram essas intros (se você não era dessa época), procure no Youtube por "Cracktro" ou "Crack Intro" junto com o nome do console. Esse tipo de intro já é antigo, vem da época dos releases de Amiga e Commodore 64. Mas eram uma verdadeira praga, pois algumas tinham mais de 1 minuto e você não podia cancelá-las. Isso ainda perdurou mais ou menos até a época das ROMs de Nintendo DS, mas parece que pararam.

O que é Redump?
Redump é uma iniciativa para "redumpar" os jogos direito, com técnicas mais modernas. Na época em que as ROMs originais foram dumpadas, haviam vários dumpers disponíveis, e cada um tinha muitas opções diferentes um do outro. Além disso, esses dumpers costumavam inserir um cabeçalho (header) no começo de cada dump. Emuladores ignoram esse cabeçalho, mas diz-se que a ROM não está "limpa". Então, o Redump quer ROMs "limpas", sem cabeçalhos e outros penduricalhos. O Redump também se preocupa em dumpar jogos em disco em formatos mais "livres", como .bin e .cue (para jogos Playstation) ou .GDI (jogos Dreamcast), pois alguns jogos na época foram dumpados em formatos muito específicos, como .ccd (do programa Clone CD), ou .CDI (do programa DiscJuggler). Ainda hoje você vê dumps de discos no formato do Clone CD, pois ninguém mais se preocupou em "redumpar" aquele jogo. Então o dump original é o único que existe.

Créditos:
https://64bitorless.wordpress.com/rom-suffix-explanations/
https://www.neofighters.info
http://ucon64.sourceforge.net/ucon64/hardware.html

Postado em 24/01/2019, atualizado pela última vez em 24/01/2019.