Minecraft wiki entry for Argument_types, associated text: block_id is required, and it should be in the format of resource location (if namespace isn't set it defaults to minecraft:).
Block states are inside [], comma-separated and must be properties/values supported by the blocks. They are optional.
minecraft:stone[doesntexist=purpleberry] is unparseable, because stone doesn't have doesntexist.
minecraft:redstone_wire[power=tuesday] is unparseable, because redstone_wire's power is a number between 0 and 15.
Data tags are inside {}. It's optional.
When placing blocks, any states provided are set, but anything omitted retain their default values, depending on the block type.
If command sets redstone_wire[power=15], it is set power to 15, but north is a default value (in this case, set to none).