There are two answers to this question, depending on whether you are using the static or dynamic policy for references. I'll cover static policy first.
During activation, the static policy guarantees that all bind methods that are going to be invoked are invoked before the activate method. Note that if any references are optional then the bind might not be activated at all. But DS enforces a happens-before relationship (in the terms of the Java Memory Model JSR133) so that the activate method can safely rely on the values of any fields set during the bind methods of static policy references, without explicit synchronization.
With the static policy, the component must be deactivated if any of the bound services becomes unavailable. Again DS guarantees that the deactivate method is invoked and completed before any unbind methods are called. (Note that there is rarely any need to implement unbind methods for static references... if your component has any cleaning up to do then it's easier to do it all in the deactivate method).
Now, things get more complex with the dynamic policy. For dynamic+mandatory references there is still a guarantee that the bind method has been called before the activate method starts, however after that all bets are off. It's actually possible for the bind/unbind to be invoked (even many times!) during the execution of the activate method.
Also be sure that you refer to section 112.5.10 ("bound service replacement") which describes the order in which bind/unbind are invoked. It can be unintuitive at first — the bind of the new service is called before the unbind of the old service — but when you think about it makes perfect sense since it guarantees that a mandatory reference is never bound to null.