See FFmpeg Wiki: H.264 and FFmpeg Wiki: AAC for more info, including CPU time vs. After encoding completes it moves a chunk of info from the end of file to the beginning so it can start playing faster when viewing via download. -movflags +faststart same as the Web Optimized option in Handbrake.yuv420p is the most compatible and universally supported. But not all pixel formats are supported by all players. libx264 supports many pixel formats and by default will choose a pixel format that most resembles the input. -vf format=yuv420p chooses YUV 4:2:0 pixel format.
If you only care about local desktop usage, you can leave that out. -movflags +faststart makes an output file that usable for HTML5 streaming, for example, putting all the necessary info to begin playback at the start of the file.Stream copy ( -c copy) is like a "copy and paste" so the quality is preserved and the process is fast.You can stream copy if the MOV file contains video and audio that is compatible with MP4: ffmpeg -i input.mov -c copy -movflags +faststart output.mp4