This is covered in the delegates documentation.
Essentially yes, Create/BindRaw can be used widely, but it has the drawback that it does not reference the object whose member function is being bound. So if that object gets deleted the delegate will end up holding a dangling pointer. So you should only use it when you know for sure that the object will outlive the delegate binding.
If you use the shared pointer version (Create/BindSP), you can test it to check that the object still exists before executing. There are heaps of examples of using the SP version within the codebase.
Edit:
To clarify, the ‘Raw’ refers to a raw C++ pointer in contrast to a smart (shared) pointer. It still is restricted to use on a member function of a C++ class object, in the same way that SP is restricted to a member function of an object referenced by a shared pointer. Likewise the UObject version works on member functions but with the restriction that the (raw) pointer passed in is to a UObject derived type. The Static variant is different, it binds to a global function or class static method, such that it is not associated with any object at all.