Sorry if this topic has already been brought up, but I might be able to provide a good answer to the question of "Is 0.999... = 1?". This will be a long message, since I don't have the patience to read through all the cut-the-knot stuff already published.
First of all, the definition of a decimal expansion is important. For finite decimals, there is no problem. For infinite decimals,
we have this rule (which I write only for nonnegative decimals <= 1):
0.a1a2a3... is an infinite decimal expansion of x if and only if for any positive integer n, we have 0.a1a2...an <= x <= 0.a1a2...an + 10^(-n).
This definition has two <= signs, and the second one is in fact crucial. Note that by this definition, 0.999... is a perfectly valid decimal expansion for 1, since adding 10^(-n) produces 1 exactly, and the <= holds. If it were strictly <, then this would not work.
However, could it be a decimal expansion for something else? Let's say there is some z < 1 which is equal to 0.999...
Then after n decimal places, where n is any integer, we have .99 (n times) <= z <= .99 + 10^(-n).
Let d = 1 - z > 0. Since .99... is a convergent series converging to 1, we know that there exists an n after which all decimal expansions with n places is less than d away from 1. Let m represent this difference. Then our above inequalities become 1 - m <= 1 - d <= 1 - m + 10^(-n). However, this implies d >= m, which is false. Thus, the decimal expansion for 0.999... must be 1.
From this, a corollary can be established: every infinite decimal expansion converges to exactly one number. However, the converse is not true; a number may have two decimal expansions. For example, 1/4 = 0.250000... = 0.249999....
The above stuff is a perfectly valid proof. However, I want to answer the previous question about: Is it fair to say that 0.999... = N such that 10N - N = 9? Well, look at it in terms of the expansions.
First of all, this is a rational number (3 / 3), so it has a repeating decimal with some period. In this case, the period is 1, because ai = a(i+1) for all positive i. So,
if N = 0.a1a2a3..., then 10N = a1.a2a3a4...
By the periodicity relation above, a2 = a1, a3 = a2, etc., and thus we obtain 10N = a1.a1a2a3...
It's obvious that 10N - a1 = N in this case (since the repeating decimals of 10N - a1 and N are exactly equal), thus 10N - N = a1 = 9, and that proves the validity of the reasoning that you questioned.
I hope that helped. I'm a computer science student at Carnegie Mellon University who just took a couple courses on this type of material.