How exchange messages between 2 android devices through wifi and bluetooth without internet?
I've myself worked on similar project in which not just text messages we were also interested in having audio chat (real time). As you pointed it, Android doesn't really support ad-hoc wifi functionality as of now (like u said that patching the wpa_suplicant isn't generic and frankly I'd call that method useless.) Also as your needs even I wanted to NOT use internet, so not being able to find any other way, for that time I just went with using any local wifi connection in proximity to connect with (just to be clear, still we're not using internet) I hope this possibly answers your points 1/2/3. I'm not sure whether a better solution to 1/2/3 exist atleast as long as Android people doesn't allow an ad-hoc to be created (or atleast joined..as of now one can't even join ad-hoc wifi from android if I'm correct)

Regarding 4, I'm again sorry to say that answer to that is also 'No'. When two devices connect first time, pairing has to happen. And, as far as I remember (I did this project a few months back and didn't get any time to continue/build upon) for subsequent connections to already paired devices it didn't ask for any confirmation besides our own confirmation which we asked to accept incoming voice call. Other than that bluetooth method actually worked perfectly fine.

Hope that helped. Let me know if there is something I can clarify more.

-Atul