add text overlay and image background to a video
The comments all suggest using an NLE (I agree), but given that your question is tagged with ffmpeg, here are a few pointers to documentation:

You can accomplish text overlay with the drawtext filter.


  Draw a text string or text from a specified file on top of a video, using the libfreetype library.


For changing the background, you should look into the colorkey filter. From the docs, here's an example to "make every green pixel in the input image transparent":

ffmpeg -i input.png -vf colorkey=green out.png


As for timing, you should cross-reference if they support timeline editing.


  Some filters support a generic enable option. For the filters supporting timeline editing, this option can be set to an expression which is evaluated before sending a frame to the filter. If the evaluation is non-zero, the filter will be enabled, otherwise the frame will be sent unchanged to the next filter in the filtergraph.


Again, this is probably better suited for an NLE, but it's certainly possible with ffmpeg, and will likely render significantly faster (at the tradeoff of likely taking much longer to craft the ffmpeg invocation vs. using an NLE). Good luck!