To begin with I believe it is imperitive to determine if the layer exists, then you can verify whether or not the layer is locked, off, or frozen (a locked, off or frozen current layer is not a good thing). That being said, if this is going to be a true "layer set function", we probably don't need to create the layer if it does not exist, rather it should return the current layer if it exists or nil if it does not.
I suggest a wrapper function for activex as well, thus the set layer command could be used in both plain lisp and vlisp.
Now perhaps I may be looking too deeply into the function, but aside from the regular "set layer" functionality (if that is indeed the purpose) why not have the ability to set the properties of the layer, those properties being ... current, color, name, linetype, lineweight, plot, noplot, lock, unlock, freeze, thaw, on, off. i.e. (LayerSet "somelayer" "current" nil) or (LayerSet "somelayer" "name" "differentname")
It just occured to me that we could use constants to define the differing states ...
vlCurrent
vlName
vlPlot
etc ....