Sorry about forgetting to welcome you (though, fortunately, ro did not forget proper manners in the last posting).  
A "generalization" relationship has the blank arrowhead pointing to the "most general" class. In the example I was giving: the "domestic_cat" class, the "leopard" class, the "tiger" class, and so on... are connected to the "feline_ancestor" class, with the blank arrowheads pointing to the latter. The generalization tree that is created in this way can be read as "feline_ancestor contains the general attributes, components and behaviour  of domestic_cat, leopard, tiger..." It can also be read as " domestic_cat, leopard, tiger... inherit attributes, components and behaviour from feline_ancestor". 
Since use cases are classifiers (elements that can have attributes, components and behaviour), they can also be related via a generalization (or inheritance) relationship. 
The "extend" relationship is another matter and it applies to use cases and realizations (same symbol, with broken lines). You specify an "extend" when you want to diagram a situation in which a sequence of events should be inserted into a particular point of another use case. For example, you are executing the phone_call use case: pick up the phone, wait for dialing tone, dial... and so forth. But the most general use case, in which you will communicate with another person, is not always carried out, because you might get a "line is busy" tone. So, the line_is_busy use case (or, if you prefer, "sub-use case") is an extension of phone_call. 
So, the line_is_busy use case is connected to the phone_call use case with an «extend» relationship, with the arrow pointing towards phone_call. In this case, the "line is busy" sequence of events is inserted right after the "dial" event. 
As you can see, an «extend» sequence of events is not unconditionally carried out. It is important to have this in mind, since the «include» relationship is the one that is usually confused with «extend». «include» means that a behaviour is unconditionally inserted into a use case. Example: two use cases, add_new_user and update_user, share a validate_user_data sequence. You create a validate_user_data use case, and join the other two with an «include» (the arrow pointing to the included use case, which in this case is validate_user_data).
Hope this helps!
Jaime