It's a fairly easy concept that I might butcher completely. 
Certain entities (or objects if you prefer to think of them that way) can product output in certain situations. For example when a normal trigger_once or trigger_multiple is touched by the player, it can produce output to something else like a door (to open or close the door). You can also set filters and flags to determine exactly what triggers a trigger, but I don't want to complicate things.
In the properties of an entity there is an Output tab. This is where you create output for that entity. I'll use a trigger as an example again. I'm assuming you know how to create a trigger and other entities like a func_door or a prop_dynamic.
You can add a new output line in the Output window by clicking the 'Add' button, then set the properties for the output. The fields are named as follows (as you enter values):
My output named - This is really a condition. For example, triggers have a "OnStartTouch" output that may be selected here. This means that once the player touches the trigger, this condition is met and some action will take place. Each type of entity has different conditions that are specific to itself. For now stick with triggers since most conditions used in the tutorials use 'OnStartTouch'.
Targets entities named - This is the name of the entity that will be affected. Say you want the trigger to open a door (a func_door entity). You would put the name of the door here. (This means that you will need to name your func_door.) Now you are providing Input to the func_door, but you haven't defined exactly what that input is doing yet...
Via this input - Now you're going to send some input to the target entity that you defined in the previous field. For a door this might be 'Open' or 'Close'--you will be able to select appropriate actions for that entity from a dropdown list.
With a parameter override of - This value is used if the entity you are sending input to can accept multiple values. This allows a value to be sent along with the input. A common use would be for certain prop_dynamic entities like the incinerator door. You use 'SetAnimation' as the input (in the field above this one) and then 'Open' or 'Close' for the parameter override. This is different from a normal door because you are setting an animation, not actually opening anything. (Case in point: Elevator doors. You can use 'SetAnimation', 'open' to display the opening animation but the doors don't actually move and you won't be able to walk through them. You will need to create a second output that sends 'DisableCollision' to the doors.)
Another use is setting values, for example in a logic_counter. You could use 'Add' as the input and '1' as the override, which will add 1 to your counter.
After a delay in seconds of - This one should be pretty obvious; it will sent the input after this many seconds.
Fire once only - I'm not sure if this is deprecated or not but I never use it. I'm guessing the usage is pretty obvious.
That's pretty much it for output. As far as I know you never specifically define input because the output you define for one entity becomes input for the targeted entity.
Make sense? I'm a noob with Hammer so I'm not sure if this explanation is complete or explained very well.. I'll be happy to clarify anything if I can.
Here is Valve's description from their wiki:
http://developer.valvesoftware.com/wiki ... nd_Outputs
The "Setting up a simple trigger" section might be useful. The Debugging section might be, too. If you learn the debugging commands you can set and watch the behavior of your entities in-game.