-profile:v baseline sets up the "baseline profile", which basically restricts features that are newer than the oldest devices that can handle h264 in hardware, or something like that? it's necessary for better compatibility in any case.
-crf 29 is a quality setting, the higher the number the lower the quality. I tried much higher numbers and got an actually bigger file for 40 than i got for 35. Though 40 is probably a nonsense value anyway.
-f mp4 sets the file ("container" format as mp4