gen_serverのビヘイビアの定義(といっていいのかわからないが)はこんな感じになっている。
gen_server.erl

behaviour_info(callbacks) ->
    [{init,1},{handle_call,3},{handle_cast,2},{handle_info,2},
     {terminate,2},{code_change,3}];
behaviour_info(_Other) ->
    undefined.

Javaでいうインターフェースのように、関数の名前とアリティが決められている。
gen_server.erlがgen_serverビヘイビアの実装で、
xxx.erl

 -module(xxx).
 -behaviour(gen_server).

のようなファイルのほうは、gen_serverビヘイビアに対するコールバックの実装、ということでよいのだろうか。
ビヘイビアということばの定義と概念が不明。。。