Difference between delayed branches and out-of-order execution
I suppose you could view branch delay slots as a very special sort of out-of-order execution, but this isn't usually what we mean when we talk about out-of-order execution: generally, we're referring to a CPU that has a more general mechanism to detect when instructions can be re-ordered.  In addition, usually out-of-order execution takes care to avoid changing the semantics/behavior of the instructions.  In contrast, a branch delay slot does change the behavior of the instructions (because it affects whether the instruction after the branch is executed or not).