Why do we need truth functional completeness? This might sound a little too basic, perhaps too basic for most people to talk about. The question seems vaguely structured - I'm not sure how to phrase it better.
Question: Why do we need truth functional completeness in logic? One reason I can think of is it allows you to describe as many properties of a model as there exist (by a property I mean a formula). So instead of characterizing a model by one property, you are able to list all the possible properties that can characterize it. This should allow you to derive more theorems than if you were dealing with connectives that weren't truth functionally complete, in which case you might be able to list fewer properties. Is my reasoning correct? Is that all there is to it?
EDIT: Let us define a set of logical connectives as truth functionally complete iff these connectives can generate every truth function (of finite arity) through composition (informal version of the one on Wikipedia).
 A: Your reasoning seems correct.
However, I would add that if a set of connectives qualifies as truth-functional complete, that tells us that all functions with the same input and output sets can get computed.  A truth-functionally incomplete set of connectives has some functions on the set of truth values which can't get computed.  This isn't just about theorems, but also about contingent propositions and contradictions.  Consider, the set A of 1-ary, 2-ary, ... truth functions which for each function returns True no matter what gets input.  A has the same set of tautologies as a usual axiom set (under uniform substitution and detachment) for propositional calculus, such as {CCpqCCqrCpr, CCNppp, CpCNpq}.  However, that set of truth functions isn't truth-functionally complete, unlike {C, N} on {True, False}, since all of the formulas which can get expressed with the connectives of A are tautologies.  
Truth-functional completeness also helps us compare the expressive adequacy of languages.  If a language is not truth-functionally complete, then it is not as powerful as a language which is expressively complete (powerful in terms of expressing states which correspond to truth functions).  For instance, let's say we want to design a machine which computes the addition of positive natural numbers using logic gates and binary arithmetic developed from logic gates.  If we use a truth-functionally complete set of primitive logic gates, we probably can do this much more easily than if we use a truth-functionally incomplete set of primitive logic gates (if we can do such at all using a truth-functionally incomplete set of primitive logic gates). 
So, truth-functional completeness in effect tells us that we can't get a more expressive set of connectives (or logic gates) using the same set of inputs (though if we change the input and out set from {True, False}, to {0, 1, 2}, then we have more expressive power).  Or in other words, truth-functional completeness tells us we have one of the possibilities for maximum power in terms of expressiveness with the current set of connectives and the same input and output sets.
