No need to feel dumb. Anybody who knows this stuff once didn't know it and hat to learn it the same way you do it right now, right?
my.flags |= POLYGON;
set(my,POLYGON); //Both lines necessary?
These lines are equivalent. set is just a macro that is defined in acknex.h as follows:
#define set(obj,flag) obj->flags |= (flag)
so that
is replaced by the precompiler to