The easiest way to understand this is to see that $\mathbf{A}\cdot\nabla$ is the usual directional derivative operator. Just like how $\nabla = \hat{\mathbf{x}}\partial/\partial x + \hat{\mathbf{y}}\partial/\partial y + \hat{\mathbf{z}}\partial/\partial z$, we have $\mathbf{A}\cdot\nabla = A_x(\partial/\partial x) + A_y(\partial/\partial y) + A_z(\partial/\partial z)$. The only difference here is that it is being applied to a vector instead of a scalar.
The meaning of $\nabla\mathbf{B}$ is exactly what it means. Just like how the gradient of a scalar is a vector, the gradient of a vector is a second-rank tensor. So $\mathbf{A}\cdot\nabla\mathbf{B}$ is the contraction of the vector $\mathbf{A}$ with this tensor. So it is effectively the dot product of $\mathbf{A}$ with each row $\partial B_i/\partial x + \partial B_i/\partial y + \partial B_i/\partial z$ of this tensor, where $i = x, y, z$. That's three dot products in total, one for each component of $\mathbf{B}$, and they constitute the components of the result.
However, looking at it from this point of view is unsatisfying because it is not obvious from the dot notation which index of the tensor is being contracted. All of this can be made proper with tensor calculus and index notation, where it is written as $A^i \nabla_i B$ (or $A^i \partial_i B$ in $\mathbb{R}^3$Cartesian coordinates). From this, it is much clearer that (1) it is manifestly coordinate-independent and (2) it is the directional derivative of $\mathbf{B}$ along $\mathbf{A}$.