This is functioning properly, but you must understand two concepts:
- The active object is one of the selected objects, always
- If you remove an object from all the collections in a scene, it will appear as though they have been destroyed, although they are still present in the file memory. It can also still be loaded in another scene's collection.
The way I see it, Add Selected to Active Collection should be relabeled to Add Selected Objects to Active Object's Collection(s). In fact, if your active object is part of several collections, the UI will ask you to which one you want to add the selected objects, or if you want to add them to every one of these collections.
Similarly, Remove Selected from Active Collection should be relabeled to Remove Selected Objects from Active Object's Collection(s). It also prompts the user whith which collection they want to remove the selected objects from.
However, if by doing so you remove one or several objects from their last container collection in the scene, it will effectively disappear from said scene. You can see they are still in the file if you change the outliner display mode from view layer to Orphan data. You can then manually re-add it in your scene.
I agree that there should be a warning if you are removing an object from its last collection saying something like "Warning : This will remove this object from the scene"
To do what you want to achieve in your last set of screenshots, you just have to deselect the cone and call the operator.