Spinlocks are faster when they do not block, which is why they are useful in situations where there is very low contention in the lock (ie a very low chance it is already locked).
When a thread sleeps it cause a context switch (ie, this thread gets swapped out for another so that the other thread may run). There is also usually higher overhead to acquiring a standard mutex than there is for checking if a spinlock is free. Very often spinlocks only require a single atomic operation when the lock is free.
These properties make spinlocks useful for fine grained locking, since using smaller locks decreases the contention on each lock. For example, one of my projects has a map with ~200,000 entries being accessed by 16+ threads at the same time (enterprise server type of thing). Having a spinlock per entry is fairly efficient because the chance that two threads in this app try to hit the same entry at the same time is low.