I think it makes quite a bit of sense actually
.
BYTE is the smallest storage unit.
WORD is 2 BYTEs.
DWORD is a double WORD, hence 2 words = 2 x 2 = 4 BYTEs.

Only problem is that it doesn't take into account signedness.
So yeah, maybe it's flaws, but I always use (u)intxx_t instead.