ICU library does the actual conversion. If it's available,
./configure will find it.
ZNC internally uses UTF-8. You can configure charset used between clients and ZNC, and charset used between ZNC and server.
If one of "Try UTF-8 and ___" options is selected, when ZNC receives a line from socket (either client, or server), at first it checks whether it's valid UTF-8, or not. If it's not, the fallback charset is used to decode the line.