What practical applications does set theory have? I am a non-mathematician. I'm reading up on set theory. It's fascinating, but I wonder if it's found any 'real-world' applications yet. For instance, in high school when we were learning the properties of i, a lot of the kids wondered what it was used for. The teacher responded that it was used to describe the properties of electricity in circuits. So is there a similar practical app of set theory? Something we wouldn't be able to do or build without set theory?

Edit: Actually, I'm asking about the practicality of the knowledge of the properties of infinite sets, and their cardinality. I'm reading Peter Suber's [A Crash Course in the Mathematics Of Infinite Sets][1] ([Wayback Machine](https://web.archive.org/web/20110703003113/https://earlham.edu/~peters/writing/infapp.htm)). The properties of infinite sets seem unintuitive, but of course, the proofs show that they are true. 
My guess is that whoever came up with the square root of -1 did so many years before it 'escaped' from mathematics and found a practical use. Before then perhaps people thought it was clever, but not necessarily useful or even 'true'. So then, if you need to understand electricity, and you can do it best by using i, then even someone who thinks it's silly to have a square root of negative -1 would have to grudgingly admit that there's some 'reality' to it, despite its unintuitiveness, because electricity behaves as if it 'exists'.
Seeing as how there was so much resistance to infinite sets at the beginning, even among mathematicians, I wonder: has the math of infinite sets been 'proven worthwhile' by having a practical application outside of mathematics, so that no one can say it's just some imaginative games?
 A: While I'm unsure any straight uses of set theory, fuzzy set theory gets used directly in quite a few areas (engineering, medicine, business, social sciences) where information is incomplete. See for example Fuzzy Set Theory: Applications in the Social Sciences or Applications of Fuzzy Logic in Bioinformatics.
A: I recently gave a talk about how rank-into-rank cardinals and the cardinals around the $n$-huge level could be used to construct new public key cryptosystems.
The basic idea is to select some finite subalgebra $(X,*)$ of the quotient algebra of rank-into-rank embeddings $\mathcal{E}_{\lambda}/\equiv^{\gamma}$. Since $(X,*)$ is finite, the algebra $(X,*)$ is always computable. One then extrapolates from $\mathcal{E}_{\lambda}/\equiv^{\gamma}$ a ternary self-distributive operation $t^{\bullet}$ on the set $X$. The operation $t^{\bullet}$ is typically of the form $t^{\bullet}(x,y)=T(x,y)*z$ for some operation $T$ that satisfies $x*T(y,z)=T(x*y,x*z)$. Then from the algebra $(X,t^{\bullet})$, one extrapolates a new algebra $(\Diamond(X,t^{\bullet}),t^{\sharp})$ ($t^{\sharp}$ is ternary) which I call a functional endomorphic Laver table. Functional endomorphic Laver tables may be used as platforms for several public key cryptosystems such as the Ko-Lee key exchange and the Kalka-Teicher key exchange.
Since such cryptosystems are very new, nobody knows anything about the security of these cryptosystems or even about the efficiency of such cryptosystems (set theorists, get to work). However, if these cryptosystems are secure against classical computation, then these cryptosystems will likely remain secure against attacks from adversaries with quantum computers as well (quantum algorithms currently use very few specialized techniques that have nothing to do with large cardinals). Depending on how you count, there are about five other different kinds of public key cryptosystems which are not known to be vulnerable to attacks from quantum computers.
A: The purpose of set theory is not practical application in the same way that, for example, Fourier analysis has practical applications.  To most mathematicians (i.e. those who are not themselves set theorists), the value of set theory is not in any particular theorem but in the language it gives us.  Nowadays even computer scientists describe their basic concept - Turing machines - in the language of set theory.  This is useful because when you specify an object set-theoretically there is no question what you are talking about and you can unambiguously answer any questions you might have about it.  Without precise definitions it is very difficult to do any serious mathematics.
I guess another important point here is that it is hard to appreciate the role of set theory in mathematics without knowing some of the history behind the crisis of foundations in mathematics, but I don't know any particularly good references.

Your second question is more specific, so I'll give a more specific answer: to thoroughly understand the mathematics behind, say, modern physics does in fact require (among many other things) that you understand the properties of infinite sets because topology has become an important part of this mathematics, and understanding general topology depends heavily on understanding properties of infinite sets.  Whether this means that set theory has any bearing on "reality" depends on how much faith you have in topological spaces as a good model for the real world.
As a specific example, the mathematics behind general relativity is called differential geometry.  I think it's fair to say the development of general relativity would have been impossible without the mathematical language to express it.  Differential geometry takes place on special kinds of manifolds, which are special kinds of topological spaces.  So to understand differential geometry you need to understand at least some topology.  And I don't think I need to justify the usefulness of general relativity!
A: Without knowing set theory, speaking to a mathematician will be like speaking to a Frenchman. You don't speak French, and he refuses to speak English.
Nah, just joking; mathematicians are nice people. They will explain in English if you don't speak set theory.
A: In a certain sense, set theory is just a formalization of what is perhaps the most fundamental of all mathematical activities: identifying that several objects in the world share a property in common and thereby grouping them together.
For instance, it could be argued that one cannot count apples until one is able to recognize whether a given object is or is not an apple, and this is the same as identifying a property that characterizes apples and then finding a procedure to check whether an arbitrary object possesses this property.
Generalizing this a bit, one cannot count objects of a certain type without first grouping the objects that one desires to count together into what is intuitively just a "set."
In this way set theory is the foundational way of thinking that underlies the entire subject, and therefore a rigorous study of set theory allows one to more thoroughly understand essentially the entire subject of mathematics.
Besides any intrinsic interest that set theory may present to specialists (i.e., set theorists), this is its most prominent and important "application."
A: There are many uses of infinite sets and their properties. Let me just give you a specific one from computer science. One important task in computer science is proving or verifying that programs do what they are supposed to do. When such programs involve loops and recursive calls (self-reference), we need methods for showing that the loops and recursive calls terminate, i.e., that the program won't run forever. The usual induction principle for natural numbers suffices for showing that a single loop terminates, but we need double induction for double loops, triple induction for triple loops, etc. The whole business can get very complicated when the program is more than just a simple combination of loops. Set theory helps sort it all out with the principle of transfinite induction and the calculus of (infinite) ordinal numbers. Transfinite induction covers all possible ways in which one could show that a program terminates, while the ordinal numbers are used to express how complex the proof of termination is (the bigger the number, the more complicated it is to see that the program will actually terminate).
A: Set theory is an extremely convenient language for being able to rigorously define and manipulate various "completed infinities" - not only just infinite sets such as the natural numbers or real numbers, but much "larger" completed infinities, such as Stone-Cech compactifications, the hyperreals, or ultrafilters, that typically need some fairly powerful set-theoretic tools, such as Zorn's lemma, to construct.  One can often get by in applications using various "incomplete" and/or "finitary" substitutes for these objects, which require less set-theoretic machinery to set up (e.g. one may be able to largely avoid use of the axiom of choice), but the mathematics can become much messier when doing so.
Once one has set up a non-trivial amount of mathematics in the realm of infinite or continuous spaces, one can often derive finitary consequences (at least at  a qualitative level) by using further tools such as compactness arguments or nonstandard analysis, which again are most easily discussed if one is working within a set theoretic framework.  A good example of this is the Furstenberg correspondence principle that allows one to derive combinatorial statements about finite sets of integers using the infinitary language of ergodic theory, which can require a non-trivial amount of set theory to work with (e.g. when using tools such as disintegration of measures with respect to a sigma algebra).  I am personally fond of using the technique of ultrafilters (or nonstandard analysis) as a bridge between the finitary world of "practical" mathematics and the infinitary world described by set theory, as discussed for instance in this blog post of mine.
(One important caveat though: if one directly uses tools such as ultrafilters or compactness to transfer infinitary results to finitary results, one often ends up with conclusions that are qualitative in nature, or quantitative only with extremely poor explicit bounds.  Often, additional effort is then required to obtain quantitative finitary results with bounds that are effective enough to be useful in real-world applications.  Nevertheless, the infinitary results can show the way forward, and serve as an excellent source of analogy and intuition to then develop a satisfactory quantitative finitary theory.)
A: The difference between countably and uncountably infinite sets has an important practical consequence. There are countably infinite finite sequences of strings that can be constructed from a finite set of symbols, and so there are countably infinite computer programs. But there are uncountably many functions from the integers to the integers. So there exist such functions which cannot be implemented by any computer program. Trace through the details of the standard proof of the existence of uncountable sets, as it applies in this case, and you define an uncomputable function, the so called "Halting Problem".
That seems pretty concrete to me. You could derive this result without talking about infinite sets, but using the language of set theory and countability abstracts out the core argument behind the halting problem so that it can be reused in other contexts.
A: You need set theory to have measure theory and you need measure theory to have the analysis required to support, for example, Fourier series. Really, most of what is going on in real analysis (and hence in calculus) depends on having a predictable understanding of how infinite sums, sequences, and sets behave.
So, elementary set theory and the ideas about infinite sets in particular are crucial for all kinds of "practical" math.
A: One cute application of Cantor's results in set theory is the existence of transcendental numbers. Since the set of algebraic numbers is countable while the continuum is not there must exist uncountably many transcendentals, in particular there's at least one.
Although this wasn't the first proof of thus result it was a very early one and the easiest one.
A: To complement some of the previous answers, notably the one by Zach Cont.
For question 1, mostly for finite sets, but not only: At the most elementary level as at the most involved or most internal to mathematics, set theory, classical logic and combinatorics are deeply related. Most applications of any two of them could be seen actually as an application of the third.
Many use of diagrams outside mathematics use a combination of naive set theory and classical boolean logic. The technical language of many disciplines use the terms union, intersection, complement of sets, and use a correspondence between (logical) combination of conditions on elements and combination of subset creation and operations.  This can be traced at least to Leibniz and probably to medieval times (scholastic tradition for instance). Traditional names in this area are mostly from the 19th such as De Morgan, Boole, Pierce, Grassmann, Venn, Cayley.
In this context, it makes sense to study more precise treatment of set theory so that it reinforces intuition of what is reasonable and expressible in this context. It gives clean conceptual tools and refined language to analyze problems and reports opinions and facts. Usually with high school students, the discussion of the classical paradoxes such as Russel and the axiom of foundation leads to better appreciation for the art of defining and for the way to use (even in non mathematical contexts) informal quantifiers and adverbs such as all, always, never, none, nobody, everywhere, everytime, at least, etc.
This might not look very spectacular, but when one considers the usual sloppiness (sometimes voluntary) in newspapers, books and general conversation, this strikes me as very practical for non-mathematicians.
Sound notions of set theory, and the ability to think in terms of cartesian products, relations as quotients, etc. are the basis of a good grasp of probability (see measure theory in other answers) and statistics (and basically experimental data measurement, quantum physics, actuarial techniques, and from the 1960s data mining, database query languages, ...).  I certainly do not rule out that we could have developped similar science and technologies by other roads, but it would have given them a very different aspect and to learn all these subjects (instead of recreating them with other foundations) without knowing set theory is especially difficult and limiting for the learner.
A: As a working mathematician, not as a logician what I am not, set theory is the set (!) of rules in order to use the symbol $\in$, meaning "belongs to". That tells me when and how I can use it. 
EDIT: Someone downvoted my (short) contribution. I would like to tell him that what I said is not as trivial as he may think. This is what my colleague Luck Darnière specialist of theories of models (in France) says himself:
Le langage des ensembles est constitué d'un unique symbole de relation binaire, "appartient à" [$\in$]. C'est dans ce langage que sont exprimés tous les axiomes de la théorie des ensembles.
I suggest my downvoter to think about that...
