Hard to understrand what are you looking.
You don't need to make separated sprites each different skin and pin to player, you should organize the animations.
Let's see, you should create a global variable with type text such as SkinColor and the values like "Red", "Blue", "Green", etc.
Do a list of animations as Red_Walk, Blue_Walk, Green_Walk, etc.
When a level is completed, you should call to set SkinColor to any color you want and set animation like:
SkinColor&"_Walk"
About the locking grey sprite you need to add instance variable LevelRequired, each level is finished it should add 1 to global variable CurrentLevel.
For example
If grey sprite has level 3 required to unlock, other has level 4 required to unlock.
There an implementation it should work all locking sprites.
Compare instance
Event:
locked.LevelRequired <= CurrentLevel
Trigger Once (or any trigger like on Start Layout)
Action:
Set Boolean locked to false
I hope it helps you.