Not a ST expert by any means - but a couple of obvservations. First, you could save yourself a local variable if you want to just reallocate the coll object in place (see bellow). Second, you have to be careful that the "coll" variable is shared in all usages - the coll variable points to a new object as a result of the operation, but any other variables that pointed to the previous collection object still point to the object originally pointed to by coll. IOW, you end up with three objects as a result of the operation - one of which will be garbage collected if there are no other references holding on to it.
The only other thought that comes to mind is that ST only allows one value to be returned by a function. So if you wanted two collections to be returned, you'd have to have return a collection that contained both collections. That would probably be the more correct ST solution since it doesn't touch the original collection in the logic (i.e. rely on a variable being invisibly passed to the method).
|collToGo|
collToGo := coll select: [ : each | each stays not].
coll := coll select: [ : each | each stays].
self sendForth: collToGo.