Allegro is UTF-8 internally, so it is probably best to keep all text as UTF-8, especially if you only want to display non-ASCII characters on the screen (i.e. you don't need to use any other Windows unicode functions). You don't need a Unicode build of your game to display non-ASCII.
The Windows "Unicode" compile mode is to change from narrow/multi-byte to wide (UTF-16) chars, and is there for historical reasons (UCS-2). It is a misleading name; both modes support Unicode. They should be called "multi-byte" and "wide".
I changed (a fork of) GWEN over to using UTF-8 everywhere, which simplifies using text, and makes Allegro 5 text rendering more efficient (i.e. nothing needs doing). It only needs to be converted to wide for Windows, on the fly, which has a very low overhead. Before it was doing it the other way round, everything was wide and converted to narrow on the fly, but UTF-8 everywhere is a better plan.
If you'd like the code to "widen" and "narrow" the unicode strings, it is here: https://github.com/billyquith/GWEN/blob/gwork/gwen/src/Utility.cpp
I'm using the C++11 locale API. There are other alternatives.
My work is in the "gwork" branch. If you are using Allegro I'd suggest using this branch/fork of GWEN as it has better Allegro support.