Finally jumping into Unity after messing with cocos2d for a while, but I'm having a hard time wrapping my head around how scripts and components should be laid out and connected.
I've dug through the AngryBots project and I can make sense of most of it. Is that a good example to follow to start? Looks like uses SendMessage quite a bit to message events.
A script is basically a component, you have to understand that everything orbits around a Gameobject and this object can have many components that can be an audiosource, a collider, a script created by you, etc.
Like JNT mentiones you can get any component of the current gameobject by using the instruction GetComponent<type> in a script. Usually you'll put that component in a variable in the Start method so you can call it later.
Regarding SendMessage, this is a way of calling a method directly through the gameobject without having to reference directly it's script.
This is useful if you have a method with the same name in different scripts, for example: in a fps you can have a script for the enemies and one different for explosive barrels but both have a method called ReceiveDamage that can be triggered by the player.