is_utf8 is even misleadingly named. I'd have called it "needs_utf8".
As in needs to be encoded using UTF-8? No, it doesn't indicate a need for the string to be encoded, using UTF-8 or otherwise.
It is actually accurately named, but refers to how the string is stored internally, not the content of the string.
Is ':encoding(utf8)' the same as ':encoding(UTF-8)'?
The encoding is called UTF-8, so use "UTF-8" (case doesn't matter). I don't know how :encoding(utf8) is different, but I don't see any reason for figuring it out.