You can define an arbitrary shape as just a series of points that are turned into line segments.
The collision test for "am I inside this arbitrary shape" is given by my answer here: In Cocos2D, how do I check for collisions against an arbitrary user-drawn shape?In Cocos2D, how do I check for collisions against an arbitrary user-drawn shape?