When you call out parallelism, flatness is implied (you are measuring a surface variation between two parallel planes = flatness) However the biggest difference is parallelism is measured with respect to a datum, ensuring both the datum and reference feature are always parallel.
Keeping this in consideration, what is the difference between flatness and straightness?
The property of a plane is flatness, i.e. the state of being flat without having pits and mounds or being even -i.e. not being uneven. Straightness is about a practically one-dimensional straight line which is supposed to have only length, i.e. only one dimension. It is the shortest distance between two points.
What is meant by straightness?
Straightness actually has two very different functions in GD&T depending how it is called out. In its normal form or Surface Straightness, is a tolerance that controls the form of a line somewhere on the surface or the feature. Axis Straightness is a tolerance that controls how much curve is allowed in the part's axis.
How flatness can be measured?
Gauging / Measurement: Flatness is can be measured using a height gauge run across the surface of the part if only the reference feature is held parallel.