The two problems you mention indeed have different roots. The first one is a consequence of numerical dispersion and the other one of numerical instability. Let me elaborate a little:
Problem #1:
The PDE in question is non-dispersive, i.e. waves of any frequency and wavenumber will travel equally fast - at speed $a$. However, after discretisation, this is no longer true. In fact, for the Crank-Nicolson scheme, the wavespeed is reduced somewhat to (roughly)
$$
a\left( 1 - \frac{2 + \lambda^2}{12}(\xi \Delta x)^2 \right),
$$
where $\lambda = \Delta t / \Delta x$ is the time to space mesh ratio, and $\xi$ is the wavenumber of a propagating wave. This means that waves of higher wavenumber will travel at a slower wavespeed than waves of lower wavenumbers. Now, assume that our initial solution can be expressed in terms of a Fourier transform. Then, if it has sharp gradients, it will typically have contributions from a large range of wavenumbers (i.e. both high and low), and hence, the solution "decomposes" into a train of waves travelling at different speeds. This typically looks like the oscillations you describe. These oscillations are no cause of instability and will not grow in time. In fact, if $b \geq 0$ they are dissipated along with the rest of the solution. Clearly, a small $\Delta x$ and $\Delta t$ reduces the problem.
Problem #2:
The issue you describe here is due to numerical instability. This is seen e.g. for the FTCS (Forward in Time, Central in Space) discretisation which is a common text book example. Von Neumann analysis shows that this discretisation is unconditionally unstable, even for very smooth initial data. However, don't dismiss central differences as useless. There are ways to modify the discretisation such that central differences can be used "almost everywhere", except near the domain boundaries, without experiencing any instability.
Update:
Below is an example of a stencil that uses central differences almost everywhere, yet is stable for the following advection problem with $a > 0$:
$$
u_t + au_x = 0 \\
u(x,0) = f(x) \\
u(0,t) = g(t).
$$
Let us discretise in space with a difference matrix $D = P^{-1}Q$ such that the semi-discrete problem becomes
$$
\mathbf{u}_t + aP^{-1}Q\mathbf{u} = \sigma P^{-1} (u_0 - g(t)) \mathbf{e}_0.
$$
Here, $\mathbf{u}=(u_0, u_1, \dots, u_{n-1}, u_n)^T$ is the semi-discrete solution vector defined on a mesh with grid spacing $\Delta x$. The right-hand side is known as a simultaneous approximation term (SAT). It weakly imposes the boundary condition for $u_0$. Here, $\mathbf{e}_0 = (1,0,0,\dots)^T$ and $\sigma$ is a scalar that we will soon specify. The matrices involved are given by
$$
P = \Delta x \, \text{diag}(1/2, 1, 1, \dots, 1, 1, 1/2),
$$
$$
Q =
\begin{pmatrix}
-1/2 & 1/2 & 0 & 0 & 0 & \dots \\
-1/2 & 0 & 1/2 & 0 & 0 & \dots \\
0 & -1/2 & 0 & 1/2 & 0 & \dots \\
& \ddots & \ddots & \ddots & \ddots & \\
& \dots & 0 & -1/2 & 0 & 1/2 \\
& & 0 & 0 & -1/2 & 1/2
\end{pmatrix}.
$$
To show that this discretisation is stable, note first that $P$ is symmetric and positive definite. Note further that $Q$ satisfies the so called summation-by-parts (SBP) property
$$
Q + Q^T = \text{diag}(-1, 0, \dots, 0, 1).
$$
Now, let us perform a stability analysis:
Define the norm $\| \mathbf{u} \|^2 = \mathbf{u}^T P \mathbf{u}$. Then it follows (I'll leave a few details for you to fill in) that
\begin{align}
\| \mathbf{u} \|^2_t &= \mathbf{u}_t^T P \mathbf{u} + \mathbf{u}^T P \mathbf{u}_t \\
&= -a \mathbf{u}^T (Q + Q^T) \mathbf{u} + 2 \sigma u_0 (u_0 - g(t)) \\
&= -a u_n^2 + u_0^2 (a + 2 \sigma) - 2 \sigma u_0 g(t).
\end{align}
Choosing $\sigma = -a$, then adding and subtracting $a g(t)^2$ gives the final result
$$
\| \mathbf{u} \|^2_t = a \left( g(t)^2 - u_n^2 - (u_0 - g(t))^2 \right) \leq a g(t)^2.
$$
Thus, the norm of the solution is bounded by the boundary data and hence, by definition, the discretisation is stable.
Conclusion:
In summary, this discretisation uses the central difference stencil everywhere except at the first and last grid points. It is stable, and will remain stable upon discretisation in time, provided a suitable $\Delta t$ is chosen.