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?

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!
