The difference is the same as between require() and include(). From PHP Manual:
"require() is identical to include() except upon failure it will produce a fatal E_ERROR level error."
Meaning that execution of your script will stop in case of require_once() failure, whereas execution of your script will continue in case of include_once() failure.
Addition of _once to both functions means that if multiple scripts include the same file, it will be added/executed only once.