Alright, a problem right up my alley.
Maybe it would be helpful if we started by discussing the set P and then seeing how the set NP relates to it.
Problems (or, pretty much equivalently, the algorithms used to solve the problems) in computer science are usually analyzed in what's known as "Big-O" notation -- that is, a way of expressing how many low-level operations are required to solve a problem of input size N.
For example, a merge sort is of algorithmic complexity O(N * log2(N)) -- that is, to sort N items using a merge sort, it will require at most (N * log2(N)) operations.
A problem that can be solved in time polynomial with respect to N (that is, it requires less than or equal to N^X operations for some fixed number X) is in the set P (P standing for "Polynomial"). One of the thorniest unsolved problems in computer science has to do with a subset of the problems that are *not* in this set.
A problem which can definitely be solved in exponential time (that is, requiring less than or equal to X^N operations for some fixed number X > 1), but which does not seem to be solvable in polynomial time, is in the set NP (for "non-polynomial"). These are also sometimes called "non-deterministic" problems, for reasons that I won't go into here.
Many very interesting problems are in the set NP. This includes a great deal of search algorithms, game theory problems, and certain logical analysis alogorithms. The simplest example I can think of to compare a P against an NP problem is 2-SAT and 3-SAT. These are problems for analyzing a description of a logic circuit.
In a SAT probem, you are given a description of a binary logical circuit using AND, OR, and NOT gates, and you have to determine if there is a way for the circuit to output TRUE. If it can, it is said to be "satisfiable" (hence why the problem is called SAT).
In 2-SAT, each "gate" can only have two inputs. One example of such a problem might be: (A AND B) OR (B AND C). This circuit can be made to output TRUE if A and B are true, or B and C are true (or if A, B, and C are all true). I won't try to prove this here, but you can write an algorithm that will take such a description as an input and tell you if the circuit is satisfiable in polynomial time (it's O(N^4), I believe).
In 3-SAT, each "gate" has *three* inputs. You might have: (A AND B AND C) AND (B OR C OR A) AND (C AND D AND NOT(A)). This circuit is *not* satifiable, as A would have to be both TRUE and FALSE at the same time. However, as far as anyone can tell, you *cannot* write an algorithm that will solve this program in polynomial time. The best algorithm that exists to solve this problem takes O(3^N) time. Thus, 3-SAT is an NP problem.
Of the NP problems, there are a subset which can all be proven to be the "same" problem. That is, you can convert from an instance of one problem to another in polynomial time. These are called the "NP-Complete" problems (3-SAT is one, for example). Others include finding a minimum spanning tree of an arbitrary graph, and solving a minesweeper board (no, really!). There are also "NP-Hard" problems -- these appear to be as hard as the NP-Complete ones, but they aren't the "same" -- it would take more than polynomial time to convert between them. These problems have been studied intently for the last 50 years or so. However, so far nobody has found a way to solve them in polynomial time -- but nobody has proven yet that you *can't* solve them in polynomial time, either. This is probably the biggest unanswered question in theoretical computer science: does P = NP?
If P=NP (or, more specifically, if the NP-Complete problems are actually in set P), then all of these problems (which are now currently impossibly hard to solve when N starts getting even moderately large) could be solved very rapidly in real time. This would likely take care of all computational needs for the forseeable future, as the NP-Complete problems are basically the only things that computers can't do in a very short amount of time already (except for certain mathematical things, such as factoring really large numbers, which is NP-Hard but not NP-Complete).
If P != NP, then these problems will never be able to be solved in a reasonable amount of time without a quantum computer (which operates in a non-deterministic way in order to perform Q^2 operations per time step, where Q is the number of Q-bits in the computer).
The reason anybody *cares* about this is that many of the NP-Complete problems are things that *have* to be solved (for instance, N-SAT problems are used in circuit simulation and verification, which -- trust me -- takes a damn long time to run for large circuits), and so an enormous amount of computer time is spent solving them now. It would be nice to at least know whether or not it's possible to solve them more quickly.