How this works:
There are two objects that make up the arrow:
The core of the arrow is just a plane:
On a different layer there is another object that works as the tip of the arrow (I changed the color for clarity)
The basic animation is an array modifier. By keyframing the count from 1 to 50 over the course of 50 frames.
Adding the arrow tip as the End cap to the array will make the arrow complete:
The path the arrow follows is determined by a bezier curve object.
By adding a curve modifier to the arrow object, the array will be deformed along the designated curve.
There is indeed an error on the original file you uploaded. The tip of the arrow is rotated 180 degrees in object mode. The trick for getting the correct direction is this: The array is generating clones of the original object (the arrow's core) in the X axis. The tip of the arrow should point in that direction.