Understanding the Broyden–Fletcher–Goldfarb–Shanno Algorithm to Select Weights for Neural Nets
The purpose of the "search direction" is that we want to move closer to a minimum of $f(x)$.  The gradient tells us the direction of steepest descent (as in gradient descent).

The reason we do the line search is to figure out how far to travel in that direction.  The gradient tells us the direction; but it doesn't tell us how far to go in that direction.

The product $\alpha_k \mathbf{p}_k$ is an ordinary product of a scalar and a vector; i.e., component-wise product.  You probably need to study a bit of linear algebra and multivariate calculus to get familiar with this sort of thing -- that's a vitally important foundation.

Step 5 is the heart of BFGS.  A full Newton method would calculate the Hessian (matrix of second partial derivatives) at each point; i.e., it would re-calculate the Hessian in step 5.  BFGS doesn't re-calculate it from scratch, as re-calculating it is expensive.  Instead, it tries to make an estimate/guess of how the Hessian has changed.  That's what step 5 is doing.  This estimate is less accurate than simply recomputing the full Hessian matrix, but it's faster.

You're not going to be able to understand what's going on in BFGS from Wikipedia.  Wikipedia's description is not very good, and there is no explanation of where the method came from.  Look for a better, more detailed explanation that explains where these steps came from, the intuition of what's going on, and how these particular formulas were derived.  Wikipedia is a great resource, but it's not a very good source for learning BFGS.