I don't think there's any mistake in the posted answers.
In your example - you're assuming that for every TM M with N states, there exists a number K such that if M stops on input X, it stops after at most K steps. This is not true - in the BB example we're only talking about the number of steps it takes to stop on a specific input (epsilon). You're assuming such a number exists for ALL inputs - and that's not true. For example, for input X with |X| > K - surely some TM halts on X after MORE than K steps, no matter how few states the TM has.
As for the question itself - proving (a) can be done as follows: assuming H(M) is decidable you can build a TM which decides L(M): Run the TM that decides H(M) on input X - if it rejected - reject (because this means M loops on X, so M does not accept X). If it accepted - run M on X and reject/accept accordingly. You can be sure M won't loop, since X is in H(M), meaning M halts on X.
Hope this helps…