Is there any difference between a volatile Object reference and AtomicReference in case I would just use get() and set()-
Short answer is: No.
From the java.util.concurrent.atomic package documentation. To quote:
The memory effects for accesses and updates of atomics generally follow the rules for volatiles:
gethas the memory effects of reading avolatilevariable.sethas the memory effects of writing (assigning) avolatilevariable.
By the way, that documentation is very good and everything is explained.
AtomicReference::lazySet is a newer (Java 6+) operation introduced that has semantics unachievable through volatile variables. See this post for more information.