the basic idea underlying all of this goes something like this:
suppose we have a large set, which we will call "X".
now, if that's all the structure we have, X is just a big amorphous blob, which doesn't help us navigate it very well.
in particular, it doesn't help us know which functions f:X→X are "friendly" and well-behaved, and which functions are unpredictable.
so we want to decide on a notion of some kind of "special" set, that helps us decide if we're "here" or "there", we want to be able to distingusih different collections of points, somehow.
now, one way, is just to arbitrarily name a family of sets, and call it special. there are just two rules "special sets" have to follow:
1) the union of any number of "special" sets is "special" (this will allow us to create bigger "special sets" from smaller ones). we also require that every element of X be in "some" special set, so the forces the entirety of X to also be "special".
2) the intersection of any two "special" sets is also "special" (this means, that if we take a finite intersection, we get a "special" set).
why only "finite" intersections? well, our guiding example, is unions of open intervals. suppose i consider the following example:
the intersection of all intervals (a-1/n,a+1/n). well, that gives just the closed interval [a,a] (a single point). so...in allowing infinite intersections, we've somehow changed the "character" of our intervals, to where we suddenly got a hard boundary.
now, there are a LOT of ways to do this, for a particular set X, since big sets have a LOT of subsets. so, in order to give our idea of "specialness" something of a more geometric flavor, we introduce the idea of measuring the distance between two points in X. such a way of measuring distance is called a metric.
there are some rules we want metrics to obey:
the distance between two points should be a real number (a distance should be a "magnitude", and we decided some time ago, that real numbers capture this idea well).
the distance from x to itself should always be 0 (and if y isn't x, the distance isn't 0).
the distance from x to anywhere is never negative.
if the distance to y from x is A, the distance from x to y should also be A.
"diagonals are short-cuts" : if the distance from x to y is A, and the distance from y to z is B, then the distance from x to z is ≤ A+B (for somewhat obvious reasons this has the "official" name of "the triangle inequality").
if we have some notion of "distance" then we can make a more interesting definition of "special":
for a positive real number ε, call a set B an ε-ball centered at x, if B = {y in X: d(x,y) < ε}. obviously the idea here is that we want all points "within ε" of x. then we call a set "special" if and only if, it is a union of ε-balls (with different ε's and different x's at the centers, that's ok).
this generalizes the idea of "open interval", for two real numbers, define d(x,y) = |y-x|. this is a perfectly good "distance" function (it's the one we normally use), and for an open interval (a,b), we can take ε = b-a, and our center to be x = (b-a)/2. so we have a (b-a)-ball centered at (b-a)/2.
it gets more interesting in 2 dimensions. then, we define d((x,y),(u,v)) to be:
√[(x-u)2+(y-v)2] (this is the pythagorean theorem in disguise).
then, an ε-ball centered at (x,y) is the set B = {(u,v) : (x-u)2 + (y-v)2 < ε2}, which is an open disk of radius ε, centered at (x,y).
if you have looked closely, you will see that the difference between a "special" set, and a "anti-special" set is closely related to the difference between "<" and "≤" in the real numbers. that is "<" always gives us "a little more room", but "≤" declares a hard and fast boundary. and it is precisely this peculiarity of order on the reals, that we want to use to guide us in deciding the difference between "near" and "far", in an arbitrary (we can call it a space now) X.
("special" sets are usually called "open" sets, and a collection of open sets on X, is called a topology (study of space) on X).