It should be noted that Genetic Algorithms (GAs) are not used for finding the optimal solution (if such a thing exists in your problem), but rather a solution that is good enough. Also, a GA is almost always beaten by problem-specific algorithms; if you know something about your problem that you can exploit, you are very often better off constructing an application-specific way of solving it.

So why use a GA? Because GAs are versatile and simple. Simple enough for a GA to be tried in quite short time. Versatile enough to be applied to nearly any problem, as long as you can quantify how good a suggested solution to the problem is. Therefore, GAs excel when you have a complex problem you don't know how to solve, but you know how a good solution would look. NP complete problems are typically those kind of problems, and indeed a field where GAs are very useful.