You are correct in your assumptions an event can be assigned multiple delegates.
A delegate is a description of a method signature.
When you instantiate a delegate you have to point it to a specific method which matches the description of the delegate.
Visual studio allows developers to be quite lazy. The line where you assign the event:
event1.Results += Handler
In reality what is happening is this:
event1.Results += new MyEventHandler(Handler)
You create an instance of the delegate, pointing it to your method and assigning it to the event.
On the wider subject of producing code with limited dependencies, I'd suggest studying the SOLID principles.
These are a set of design principles which if followed will pretty much guarantee your code is will written with as few dependencies as possible.
http://en.wikipedia.org/wiki/SOLID_(object-oriented_design)[
^]