Why is data location not required to be specified for bytes32?
Whether or not you need to declare
calldata depends on if your variable is a "complex" variable or not. (See the note here.) This means things like structs and arrays. Simpler types are automatically assigned
storage - see this question and anwser.
To answer fully,
bytes32 will automatically be
storage even without a data location declaration.