1) Le funzioni che terminano con Ex sono funzioni che estendono le funzionalità della stessa funzione che non termina con Ex. Nello specifico la CreateWindowEx permette di specificare il parametro dwExStyle che come riporta msdn: "Specifies the extended window style of the window being created".

2) Allora se tu controlli i vari file che vengono tipicamente inclusi in un progetto win32 noterai che in tali file sono specificati i prototipi della maggior parte delle API più comuni, a loro volta la maggior parte dei prototipi delle API (quelle che utilizzano come parametri tipi STR) presentano 2 versioni la xA e la xW, in seguito tali prototipi vengono ridefiniti a seconda che sia definito unicode o no.
Esempio preso da winbase.h di vs:
codice:
 
WINBASEAPI
__out
HANDLE
WINAPI
CreateFileA(
    __in     LPCSTR lpFileName,
    __in     DWORD dwDesiredAccess,
    __in     DWORD dwShareMode,
    __in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes,
    __in     DWORD dwCreationDisposition,
    __in     DWORD dwFlagsAndAttributes,
    __in_opt HANDLE hTemplateFile
    );

WINBASEAPI
__out
HANDLE
WINAPI
CreateFileW(
    __in     LPCWSTR lpFileName,
    __in     DWORD dwDesiredAccess,
    __in     DWORD dwShareMode,
    __in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes,
    __in     DWORD dwCreationDisposition,
    __in     DWORD dwFlagsAndAttributes,
    __in_opt HANDLE hTemplateFile
    );

#ifdef UNICODE
#define CreateFile  CreateFileW
#else
#define CreateFile  CreateFileA
#endif // !UNICODE
3) Devi inizializzare i common control attraverso la funzione InitCommonControlsEx, dopo di che devi aggiungere al tuo progetto un file manifest, cerca su google e trovi sicuramente le informazioni necessarie

4)Certamente, quando dichiari la struttura WNDCLASSEX, e ne inizializzi i membri basta modificare a piacere il membro hbrBackground. QUI maggiori informazioni