リンクの内容、つまり、開始タグと終了タグで囲まれた部分を文字列化したものを返します。
いわゆる inner_text で、パーサが解釈した「挟まれた文字列」が返ります。
<a href="./index.html#menu">ホームへ戻る</a>
という HTML で表されるリンクオブジェクトだった場合、text メソッドは文字列 "ホームへ戻る" を返します。<a href="..."></a> という内容が空の状態だった場合は空文字列 "" を返します(nil ではありません)。
<a href="./index.html#menu">
ホームへ戻る
</a>
という HTML で表されるリンクオブジェクトだった場合、text メソッドは文字列 "\n ホームへ戻る\n" を返します。
文字エンコーディング(と Ruby1.9のEncoding)は UTF-8 で、HTML としての文字参照は
Mechanize::Util.html_unescape で解決されています。
空白文字は基本保存されますが、空白文字だけの場合は「最初のタグ」までしか保存されず、以降の空白文字だけの文字列は無視されます。画像を含んでいた場合は、画像だけが挟まれていた場合は alt 属性の値が使用されますが、他の文字が a 要素として存在した場合は alt の存在は無視され、他の文字の連結が返り値となります。
何言ってるかよくわかりませんが、実例を見てもやっぱりなんだかよくわかりません。
<a ...>Ruby</a> #=> "Ruby"
<a ...></a> #=> ""
<a ...> </a> #=> " "(同じ個数)
<a ...><img ... alt="B!"></a> #=> "B!"
<a ...><img ... alt=""></a> #=> ""
<a ...><img ...></a> #=> ""
<a ...><img ... alt="B!"><img ... alt="3users"></a> #=> "B!3users"
<a ...><img ... alt="B!">/<img ... alt="3users"></a> #=> "/"(altが消える)
<a ...> <img ... alt="B!"><img ... alt="3users"></a> #=> " "
<a ...><img ... alt="B!"> <img ... alt="3users"></a> #=> ""(「2番目」以降にある空白は使用されない)
<a ...><img ... alt="B!"><img ... alt="3users"> </a> #=> ""(「2番目」以降の空白は使用されないんだってば)
<a ...> <img ... alt="B!"> <img ... alt="3users"> \n </a> #=> " "(だから「2番目」以降以下同文)
<a ...>a<img ... alt="B!"> <img ... alt="3users">c</a> #=> "ac"(空白特別扱いは「1番目」にあるときのみ)