>>499
plugin/foo.vimのlocal script function (s:foo)の場合は、ふつうは他から再定義されることはないから、開発中意外はこれといって意味はないように思える。
なぜか、プラグインがグローバル関数を宣言していて、再定義されたくない場合は、! を付けないかもしれない。

autoloadはリロードとかそういう意味じゃなくて、関数の定義を遅延させることでスクリプトの読み込みを高速化する仕組み。
:h autoload-functions