When you create a Firebird database, you specify a default character set. This is used as the storage character set unless you explicitly specify a character set for a text column.
When you connect to a database you specify the character set used for the connection. Firebird will attempt to transliterate, if possible, to and from the stored characters into this character set for read/write operations. If transliteration is not possilbe then you get the notorious arihmetic overflow or string conversion error.
Lazarus works internlly in UTF8 for the AnsiString type and a further transliteration is required when the data is received if UTF8 is not used for the connection character set. IBX does this automatically. i cannot speak for other database connectors.
When Character set NONE is speciified as the storage character set, a text string is stored as it was received i.e. using the connection character set. When read back, no transliteration takes place and is interpreted using the connection character set. It works fine as long as the same connection character set is used for read/write.
For Lazarus, I would always use UTF8 in all cases as this avoids the need for transliteration. UTF8 can store all unicode characters and avoids the risk of tranliteration errors. The only downside is that storage space is always four times the characater width. Your choice depends on how much of an issue this is compared to the limitations and issues that arise from use of a single byte "codepage"character set.