For example, if you use -msse4, does this imply that it will also use -mssse3, -msse3, -msse2 and so on or do you have to explicitly add those flags as well?
You only need the highest level switch, e.g. -mssse3
implies -msse3
, -msse2
etc. It doesn't cause any problems if you add the lower level switches, but they are redundant.