Arrow animation in 2D
If you want your arrow to grow along the curve:


Give your arrow an Array modifier, choose Fit Type > Fixed Count, and End Cap > arrow like you did.
Give your arrow a second modifier, a Curve modifier, and choose the Path as the Object.
Now increase the amount of Count of your Array, the arrow grows along the curve.
You can now insert keyframes so that at frame 1 of the timeline there is only one duplication and at frame X there is as many duplications as you want.
Note that, anyway, the arrow will be messed up at the U turn of the curve, as your arrow is not subdivide, is big, and the curve is sharp. If you don't want the front of your arrow to be deformed it should be a separate object and it should move along the curve (with the method explained below).


If you want your arrow to move along the curve:

You gave your arrow a Curve modifier while, for your purpose (follow a curve without deformation) you should have given it a Follow Path constraint.

Right now it is behaving like it is supposed to. You've given your arrow a Curve modifier, which means that it follows the curve you've chosen as Object and it deforms along this curve. As your arrow is big and doesn't have a high poly mesh, the deformation is a bit messy. Even with a high poly mesh it won't give anything great.

If you want your arrow to follow the curve without any deformation, you need to give it a Follow Path constraint:


Remove the Follow Path you gave to the curve (it is useless, the curve won't follow any path).
Delete the Curve modifier you gave to the arrow.
Delete the previous Follow Path you gave to the arrow and give it a new one.
In this modifier click on the Animate Path button, and enable the Follow Curve option. As Blender doesn't know how you want to orientate the arrow, try different Forward (X is the good one).
Now the arrow follows the curve without any deformation.


Now if you want to control the speed of the arrow along the curve:


Select the curve, open the Graph Editor window, on the left panel (Path > NurbsPath.001), unfold NurbsPath.001 and click on Evaluation Time. Open the right panel with N and click on the Modifiers tab. Delete the Generator modifier (X). You've delete the animation you've automatically generated when you created the Follow Path constraint you gave to the arrow, and the arrow doesn't move any more. You have to reprogram the animation.
In the Properties panel > Data > Path Animation, choose the amount of Frames you want. 100 by default is ok. It means you choose to segment your curve 100 times. The Evaluation Time will determine at what segment of your curve your arrow will be at the time you want. For example place your timeline cursor (green bar) at 1 and create a keyframe (i) on the Evaluation Time > 0.00. Now move your timeline cursor to 20, go back to the Evaluation Time, choose 50, and create a keyframe. Now from frame 1 to frame 20 the arrow moves from the beginning of the curve to its middle.
If you want the animation to be linear and not smooth as it is by default, in the Graph Editor, press t and choose Linear.