なんか皆がどのへんの理解に苦しんでいるのかがわからない。

関数のdeleted定義は、その名前のとおり、関数の定義である。
deleted定義によって定義された名前は、宣言以外の目的で使うことはできない。
使った場合はエラーとなる。
もちろん、関数呼び出しはできないし、未評価式の中でも使えない。

void f() = delete ;
void f() ; // OK、再宣言

int main()
{
  f() ; // エラー、関数呼び出し
  typedef decltype(f) * type = &f ; // エラー、decltypeの未評価式と、&演算子のオペランド
}

それ以外は、通常の関数の定義とまったく同じように振舞う。
もちろん、name lookupで見つかるし、テンプレートならばインスタンス化されるし、オーバーロード解決の際にも考慮される。
ただし、そうした結果として選ばれた名前が、deleted定義であった場合、その名前を使うとエラーとなる。