An action is a defined place in the code where you can insert your own code. So if the line do_action('init') is called, then you can hook in your own code with add_action('init','my_function'); and your function will get run at that point in the code.
A filter is like an action, but you're expected to be acting on some variable, possibly modifying it, and returning the result.
For example, say I have this code:
$value = 5;
$value = apply_filters( 'value_adjuster', $value );
That code takes whatever $value is (in this case, five), and runs it through the "value_adjuster" filter. So if I want to modify that value, I can use a filter to do it like so:
add_filter( 'value_adjuster', 'my_filter' );
function my_filter( $original_value ) {
$new_value = $original_value + 5;
return $new_value;
}
Now $value will be 10 after the apply_filters function runs.
That help any?