They are not compulsory, but depending on what functions you call they may make things easier for you. Any Win32 API which accepts strings is available to Metro style apps only in its Unicode version. If you use MBCS strings you will need to convert them
before passing them to these functions.
Since you are getting errors already I expect you are calling such functions and it will be easier to #define UNICODE and then fix your string constants than to manually convert before calling Win32 API.
--Rob