I was surprised just now to find out that I can paste an emoji into vim via PuTTy and it be rendered correctly - I assumed I'd get a blank space or a crossed square or similar. I use the inconsolata font, which I'm pretty sure doesn't have these glyphs defined in it. So how does this work? I assume a different font is switched in, but how and by what? Does Windows 10 do it? Or is it CentOS (the box I'm running vim on)? Or PuTTy?
Vim natively supports emojis/smileys.
The requirements are listed in the post Emoji not displaying correctly when using vim or tmux, and are basically that all products that are handling/passing this character need to have full support for Unicode.
When Unicode is used, vim will display characters that are not part of the font, and will recognize them by their code.
See also the post How do I enter an emoji into a string in Vim?