What's the difference between me explicitly defining every Win32 API I use in my project as W (Wide) or A (ANSI) and letting it be decided by the solution/project configuration? Apart by being able to change it on the fly, that is.
Say I only need Unicode at the moment for some reason, would it be better of me to just let them expand to the correct one automatically or explicitly define them? Would it break some systems on release if I only develop for ANSI or Unicode versus supporting both?
The last versions of Windows that were based on an "ANSI" charset (Windows 9x) reached end of life long ago. All newer versions (based on NT), even the embedded ones, use UTF-16 to provide full Unicode support. For those, all the ANSI functions are implemented as wrappers which cause overhead (conversion needs time and space) and loss of data (ANSI is only a subset of Unicode).
I would only use the wide versions. In particular, when exporting interfaces, I would refrain from using TCHAR-based strings, because it would require me to provide two different implementations and because it shouldn't be necessary for modern code.