[Based on the timestamp, it looks like Domen's answer has priority. I'm leaving my answer, because I think it adds some extra flavor, but I don't think there is sufficient reason for these answers to be in competition. I.e. if one of these is to be selected as "the answer", it should be Domen's based on priority.]
Look at Information["b"]. I'm assuming that this is working as expected. The token Nothing is just an expression like everything else. It just gets interpreted specially when it's in a list. So, when you evalute b[[10]] = Nothing, you are literally assigning the 10th element of b to Nothing. Now, whenever you subsequently evaluate b, that Nothing gets interpreted and the result is a list that's missing the 10.
You could re-assign the 10th element of b if you want (you actually did this, you just re-used the same value though):
b = Range[15]
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
b[[10]] = Nothing;
b
{1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15}
b[[10]] = 99999;
b
{1, 2, 3, 4, 5, 6, 7, 8, 9, 99999, 11, 12, 13, 14, 15}
Interestingly, if you evaluated b = b at some point, this would change the actual definition of b to be a list without the Nothings.
UPDATE
I thought it would be worth explicitly showing the b = b evaluation, because I think that might clarify some issues that have come up in comments. So, from the top:
b = Range[15]
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
b[[10]] = Nothing;
OwnValues[b]
{HoldPattern[b] :> {1, 2, 3, 4, 5, 6, 7, 8, 9, Nothing, 11, 12, 13, 14, 15}}
Length[b]
14 <- This is because b was evaluated, and during evaluation Nothing was removed.
(OwnValues[b] /. List -> Hold)[[1, 2]]
Hold[1, 2, 3, 4, 5, 6, 7, 8, 9, Nothing, 11, 12, 13, 14, 15]
Length@%
15 <- The point here is Nothing doesn't affect the computation of Length.
b = b
{1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15} <- The right hand side was evaluated, and the result of that evaluation was assigned to b. We can then see that b has indeed changed:
OwnValues[b]
{HoldPattern[b] :> {1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15}}
b[[9]] = Nothing; Print[b]; b[[9]] = Nothing; band the same thing happens. But perhapsNothingis not meant to be used this way? $\endgroup$