This algorithm is similar to Dijkstra's algorithm, but the weight can be either positive or negative (complexity $O(n*m)$).
The algorithm will fail if there is a negative-weight cycle because we can always make another iteration and reduce the shortest path value.
You will have up to $|V|-1$ iterations, but if you have an iteration with no changes, then the algorithm is done.
The differences with Dijkstra are for $i+1$
- you start at a vertex
- you will replace the distance if the old one is bigger
- but you can also use the distances calculated in the current iteration
It can be summarized as "at each iteration, you will try to find if you can have a better predecessor for each vertex".
We are starting from A
The interpretation is the same as for Dijkstra.