Typically Assemblies contain only Links to actual Components and do not contain any data within themselves; if you Delete/Move/Rename the Component, the Assembly will break
Virtual Components are Components that Exist only Inside of the Assembly; these are characterized by the "^" (Carat) after the Component Filename (in the Design Tree) followed by the Assembly Filename
You may create New Components that exist entirely in the context of the Assembly
You may RMB→ Edit the Component within the context of the Assembly, but it may be easier to Open the Component and Edit as you would Normally
You can remove Material from Components with an Assembly. This removal can remain in the context of the Assembly, or you may Propagate it to the Component so that if you wanted a Hole to go through multiple components, it would appear on the actual Component, Virtual or not.