Q:

How concerned should we be about brute force attacks when creating passwords?

Are brute force attacks effective in the real world? Almost every service I have ever used where a password was needed had some type of protection against trying even more than a few passwords. Also, how does this translate to data encryption?

A:

brute force a.k.a. exhaustive key search - is a method that can work on multiple attack vectors
what you describe is attacking a service by authenticating through the service. The service here acts as a gate keeper, and can prevent the attack by limiting your attempts, etc.
However that is only one attack vector to the system:
what if an attacker gains access to the user database by other means? will he be able to leverage this knowledge to access the service now?
if the owner of said service was dumb enough to store clear text passwords ... ouch... but let's assume the passwords are stored in a way that uses at least a one way function like a hashfunction
let's see what changed...
we can have as many attempts on the password guessing side as our available computational ressources allow ...
the only remaining gatekeeper here is the complexity of guessing a password
if we only need to check value == hash(password) we can easily see that there are other ways of efficiently attacking this than brute force ...
but you asked for brute force specifically so let's assume our passwords are salted...
value == hash(password,salt) ... no more rainbow tables... but this is still bad, since we can possibly calculate that very quickly and parallelize ... the limiting factor that remains is hardware ... if we throw in a number of (rented? ... hacked?) number crunching systems with enough cores / GPUs ... how fast can we crack a password by brute force? ... let's do a little math here ...
let's say we have one system that does our work ... doing roughly 1,000,000 password guesses per second ... let's say our password has an entropy of ~42 bit ... that's roughly a 9 letter lowercase password ... how long does it take?
~51 days untill a guaranteed positive guess if the attacker knows the allowed char pool (lower-alpha in our case)
you can assume that after 50% of that time the probability of a correct guess is 50% so... not very long...
but it get's worse ... we assumed one machine ... does it scale if we buy/rent/hack more? sure it does ... let's assume 10,000 machines ...
we can simply divide by 10k ... and we are down to roughly 7 minutes 21 seconds ...
what does it cost to rent 10k machines from a cloud provider for 10 minutes? ... as an example (we didn't specify the complexity of our hash function so this example might not be in the range of those guesses per second, but you will see where this goes) ... an a1.xlarge amazon ec2 on-demand instance costs roughly 10 us-cents per hour ... we need it for ... 10 min ... so divide by 6 ... we want 10k nodes ... round about 170 USD ... let's round up ... 200 USD as a rough estimate
so... computational ressources have become available in vast numbers for relatively small money if we wanted to rent them... now think about malware capturing computational ressources 
so ... with all that computational ressources on the bad guy side ... what can we do?
we can make guessing harder ... 
if we increase the password complexity from those 42 bit above to ... lets say lower and upper alphanumeric and a length of 16 chars ... that's an entropy of roughly 96 bit ... and our little machine with 1,000,000 guesses per second will take roughly 2.5 quadrillion years to find our password (guaranteed... if it does not malfunction, has enough power, and you find a way to make it survive the end of our sun in a few billion years... but that's another story)
but back to the real world .. we take another cloud setup that can guess 100,000,000,000,000 passwords per second ... 10k times the size of the 10k machines we calculated earlier with... it will take us 25 million years to have a guaranteed hit ... probable success after 50% of that time ... so why does that not counter the increase of those additional 54bit entropy? ... exponential growth ... each bit more doubles the work...
another thing we can do besides the increase of our entropy is to increase the calculation complexity of a guess
if we chain our hash function like hash(hash(hash(...))) for a variable number of rounds, we can increase the time it takes to calculate the result ...
for a regular login, it does not really matter if your login takes 10ms or 250ms, but for an attacker, that difference means he has to afford 25 times the computational ressources or it takes 25 times as long... not as mighty as our entropy increase, but still... it's a measurable effect at very little cost on our side
when it comes to data encryption we usually don't talk about passwords but encryption keys ... a few bytes of entropy... at this level it's basically the same calculation as above ... at around 80 to 90 bits it's rather hard and expensive ... at around 40 ... whoopsy it's open ...
the interesting part is when you have to use a password to encrypt something ... how to get from the password to the needed bunch of key bytes? hashing? probably... but how?
the good thing is ... other folks had that very same problem before us ... and that resulted in well documented and examined functions like PBKDF2 (Password Derived Key Derivation Function ... you can kind of see it as a hash function with variable length output ... it creates a pseudo random bit stream and it's up to you to take as many bits as you need... typically the key size of a symetric cipher)
PBKDF2 has a round parameter to increase computation time ... so basically... it's the very same as above

