Es exactamente es lo que dices:
"." se usa para acceder a los miembros de una clase/struct
"->" se usa para acceder a los miembros de una clase/struct a traves de un puntero
Sobre el error de ct creo que:
void colorkey(int r,int g,int b){
ct.r=r;// aqui me dice `ct' undeclared (first use this function)
ct.g=g;
ct.b=b;
};
deberia ser:
void sprite::colorkey(int r,int g,int b){ // falta decirle a que clase pertenece sino no encuentra ct
ct.r=r;// ahora ct ya esta declarado
ct.g=g;
ct.b=b;
};