The \x1b escape sequence (which works in sed, also C source code and shells like bash) corresponds to an ESC (like the ESC key.)
See the manpage for ascii(7):
Oct Dec Hex Char
------------------------------
033 27 1B ESC (escape)
The C-style \xNN sequence recognized by sed takes the hexadecimal representation of the character, which in the case of ESC is 1B, so that's where \x1b comes from.
Vim doesn't recognize \xNN C-style sequences, but it actually does recognize similar sequences with a slightly different syntax: \%xNN, so one way you can translate that ESC sequence to \%x1b. The following works on Vim:
:s/\%x1b\[[0-9;]*m//g
But you can simplify it. Since ESC is a somewhat frequently used symbol, there is a special shortcut escape sequence for it: \e. So this will also work:
:s/\e\[[0-9;]*m//g
Finally, as you noticed, it's possible to insert a literal ESC character in your match.
In Vim, it's usually possible to insert a literal character by preceding it with the Ctrl+V combination.
So using Ctrl+V, ESC is one way to enter this sequence. It will be displayed as ^[, but usually in a different color, to indicate it's representing a single character. Also, when moving the cursor around, it will only stop on top of the ^ and not the [, to be consistent with that being a single character.
You might have noticed that using Ctrl+[ after the Ctrl+V is also possible, that's because Ctrl+[ is the same as ESC. In fact wherever you press the ESC key (such as to exit insert mode), you could equivalently press Ctrl+[ instead, that would work. So much so, that the character produced by a literal ESC, ^[, is actually a representation of Ctrl+[ (the ^ symbol is often used for Ctrl, for instance try Ctrl+V, Ctrl+A in insert mode to see a ^A for a literal Ctrl-A character.)
In general, using the backslash sequences (such as \e or slightly inferior \%x1b) should be better, since it's easier to store those in text files (such as your .vimrc), rather than literal special characters such as the literal ESC.