In general, |a| = a when a is positive (or zero). When a is negative, then |a| = -a (because a is negative, -a will be positive). So if you see an expression like |x + 3|, there are two possibilities:
x + 3
> 0, so x
> -3, in which case |x + 3| = x + 3
x + 3 < 0, so x < -3, in which case |x + 3| = -(x + 3)
When you break your problem into cases, you seem to be ignoring the assumptions you're making - that is, in the positive case, you're assuming in advance that x
> -3, so you shouldn't be including any solutions less than -3 when you look only at that case.
Now, when you solve an equation like |x + 3| = 5, you can certainly break the problem into two cases. The 'positive case' is straightforward. In the negative case (where x < -3), we replace |x + 3| with -(x + 3). We then have
-(x + 3) = 5
Notice that since we can multiply an equation safely on both sides by -1, we can rewrite this as follows:
x + 3 = -5
We can *only* do this with an equation. If we instead had an inequality like |x + 3| < 5, then when we consider the 'negative case' where x < -3, we can still replace |x + 3| with -(x + 3) to get
-(x + 3) < 5
Notice however that we are *not* free to instead put the negative sign on the right side of the inequality. To do that, we'd need to multiply both sides by -1, and when you multiply on both sides of an inequality by a negative number, you need to *reverse* the inequality. That was the problem with your second solution.
All of that said, I don't like case-by-case approaches to absolute value. If you understand that |a - b| is the distance between a and b on the number line, then you can interpret the expression |x + 3| = |x - (-3)| as the distance between x and -3. So if |x - (-3)| is less than 4, then x is less than 4 away from -3, so must be between -7 and 1.