Pour ton probleme SDL : c´est normal :
tu rappelles initSDL ? Pourquoi ?
Il ne faut appeler InitSDL qu´une seule fois 
De plus, pourquoi fais tu un flip apres avoir affiché que le premier écran ?
Ce qu´il faut faire, c´est afficher tous tes trucs, puis apres faire le flip 
Voila ton code corrigé :
init_SDL();
SDL_Rect rect1;
firstscreen = SDL_LoadBMP("decor.bmp");
rect1.x = 0;
rect1.y = 0;
SDL_BlitSurface(firstscreen,NULL,screen,&1);
SDL_Rect rect2;
firstscreen2 = SDL_LoadBMP("hud.bmp");
rect2.x = 14;
rect2.y = 0;
SDL_BlitSurface(firstscreen2,NULL,screen,&2);
SDL_Flip(screen);
Apres, pour la suite, quand tu voudras animer, il ne faut surtout pas mettre SDL_LoadBMP dans la boucle principale, mais avant !
En effet, il ne faut pas charger l´image depuis le disque a chaque frame 
Il faut la charger une fois pour toute en mémoire, puis la blitter a partir de la mémoire.
Pour le son sur FMOD, sur qu´on peut
mais je ne connais pas par coeur : faut voir la doc !