Typedef struct not working
In plain C, structs are identified by "struc tags", which do not live in
the same namespace as type names. Thus, if you declare

struct RGB {
    ...
};


a variable of this type should be declared as

struct RGB led;


In order to avoid the inconvenience of repeatedly typing struct, a
common idiom is to define it as a type:

typedef struct {
    ...
} RGB;

RGB led;


The Arduino environment, however, is based on the C++ programming
language. In C++ struct tags are types, and you thus do not need the
typedef:

struct RGB {
    ...
};

RGB led;


This is the recommended idiom in C++: just remove the typedef.