Not providing block states will make the game test for the defaults, instead of ignore the states
when running a command such as
/execute if block ~ ~ ~ skull run say hi
and standing inside a skull, the command returns false, even though it should return true. (The command doesn't run)
this doesn't just affect execute (if/unless) block, this also affects fill replace.
In general, testing for any block that has block states (without specifying any) will always look for the default state of the block, when really it should ignore states. Therefore, the following two commands are equivalent:
execute if block ~ ~ ~ redstone_wire run say only unpowered redstone wire
execute if block ~ ~ ~ redstone_wire[power=0] run say only unpowered redstone wire