You should still add an error code, so that people can look for additional documentation about the error on your official doc, but having obscure errors and assuming people will look on Google to see if someone on reddit or stackoverflow has more idea about what the problem could be is criminal laziness.
There is no c) "Not a valid Microsoft controller" option. Which one between a) or b) is more likely to lead to resolution? Note, Microsoft also offers phone and/or chat support to Xbox users.
Also, what do your alternatives have to do with the question whether it's better or not for the error message to be localized?
And why are error codes supposed to be 32bits long in the first place?
To get back to the topic, there are no reason why there couldn't be a good error message (there's no “two options” when you write your error messages) and if the error message is good enough so you don't have to Google it, you can and should localize it so the majority of the people of this planet could in fact read it. And you also want to put a error code available in case you still wanted to investigate about it, but there's little reason for this error code to be 32bits long unless you have 4 billion different possible errors in your app…
I get better error messages from the firmware of obscure embedded chips than from Microsoft Windows
According to the article, they didn't. The pop up has the error code and a descriptive error message. And no "Oops :(".
And find what information? Try turning it off and on again, update & reboot, then clean the registry?