How to rotate one vector about another?
Orthogonal component method:
$\vec a$ rotates about $\vec b$ in a clockwise direction by $\theta$ rad according to the right hand rule where your thumb represents $\vec b$, and the curling of your fingers represents the direction of the rotation. This method involves finding $\vec a_{\perp b}$, the component of $\vec a$ orthogonal to $\vec b$ and rotating it by $\theta$ along the plane with normal $\vec b$ .
$\vec a$ can be decomposed into two components:$$\vec a = \vec a_{\parallel \vec b} + \vec a_{\perp \vec b}$$
$\vec a_{\parallel \vec b}$ is the component of $\vec a$ in the direction of $\vec b$ $$\vec a_{\parallel \vec b} = \Big(\dfrac{\vec a\cdot \vec b}{\vec b\cdot \vec b} \Big)\vec b$$ $\vec a_{\perp b}$ is the component of $\vec a$ in the direction orthogonal to $\vec b$ $$ $$
\begin{align*} \vec a_{\perp \vec b} =& \vec a - \vec a_{\parallel \vec b} \\ \\\vec a_{\perp \vec b}=& \vec a - \Big(\dfrac{\vec a\cdot \vec b}{\vec b\cdot \vec b} \Big) \vec b \end{align*}
Our next step is to determine $\vec w = \vec b \times \vec a_{\perp \vec b}$
This vector orthogonal to both $\vec a_{\perp \vec b}$ and $\vec b$ .
Then we need to find a linear combination of $\vec a_{\perp \vec b}$ and $\vec w$ representing a rotation of $\vec a_{\perp \vec b}$
$$\vec a_{\perp \vec b, \theta} = ||\vec a_{\perp \vec b}||(x_1 \vec a_{\perp \vec b} + x_2 \vec w)$$
Where: $$ x_1 = \dfrac{cos(\theta)}{||\vec a_{\perp \vec b}||} $$
and:
$$x_2 = \dfrac{sin(\theta)}{||\vec w||}$$
Finally we can make our vector representing the rotation of $\vec a$ around $\vec b$ by $\theta$ rad:
$$\vec a_{b,\theta} = \vec a_{\perp \vec b, \theta} + \vec a_{\parallel \vec b}$$
*NOTE:
1) As a preliminary belief check, make $(\theta = \pi/2$ ) or ( $\theta = 0$) and look at what the $sin(\theta)$ and $cos(\theta)$ in the equation for $\vec a_{\perp \vec b, \theta}$ do.*
2) If you need further demonstration that the last equation is the vector we are looking for just ask
3) The method described above is an adaptation of the "Rodrigues" rotation
Bibliography: "Linear Algebra with Applications" by Steven J. Leon https://en.wikipedia.org/wiki/Rodrigues%27_rotation_formula
Roughly speaking you want to do this :
Start with $v_1 = b/|b|$ and extend it to an orthonormal basis $\{v_1, v_2, v_3\}$ of $\mathbb{R}^3$
Write these vectors as columns of a matrix $P$ (notice that $P$ is invertible)
Consider the matrix $B = PAP^{-1}$ where $$ A = \begin{pmatrix} 1 & 0 & 0 \\ 0 & \cos(\theta) & -\sin(\theta) \\ 0 & \sin(\theta) & \cos(\theta) \end{pmatrix} $$
The vector you are looking for is $$ c = B(a) $$
A solution with quaternions:
Identify the quaternions with real part zero with vectors in $3$-space according to a Cartesian coordinate system: the $x$ axis becomes the coefficient for $i$, the $y$ axis for $j$ and the $z$ axis for $k$. In particular, we have quaternions $A=a_xi+a_yj+a_zk$ and $B=b_xi+b_yj+b_zk$ corresponding to the vectors $a=(a_x,a_y,a_z)$ and $b=(b_x,b_y,b_z)$.
Let $u$ be the quaternion $B$ normalized to unit length.
For your angle $\theta$ (measured in clockwise radians according to the right hand rule with $B$) compute $q=\cos(\theta/2)+u\sin(\theta/2)$.
The transformation $x\mapsto qxq^{-1}$ rotates the $3$-space of purely complex quaternions $\theta$ degrees clockwise around the axis presented by $u$ (which is the same as the axis $B$ gives). Keep in mind that $q^{-1}$ is just $\cos(\theta/2)-u\sin(\theta/2)$.
Notice that $qBq^{-1}=|B|quq^{-1}=|B|u=B$, showing that $B$ is the axis.
So to find out where $a$ is going, compute $qAq^{-1}$ and interpret the resulting quaternion as a vector in $3$-space.