Here's the video
In 17w45b, /data is introduced. This USEFUL command is paired with /execute store to make variables possible.
In this one,
1. /data get is used to get the coordinates of the target and the "missile" (Pos,Pos,Pos).
2. The 6 values into a scoreboard (named Position in this case).
3. Using /scoreboard players operation, the differences (-=) of the coordinates of the two entity is calculated.
4. /execute store is used to store the difference (scaled down to prevent "speeding cars") into the Fireball's power: tag.
Therefore, what I did is to get the position of the two, subtracted them, and store the value into the power: tag, making the fireball to change it's motion. And that's all!