1. Not sure why cachobjtype is showing up us prepared. Is the next column (objtype) showing Proc? Also are you running the query from SSMS or from a client?
2. To get the text of the query, use this:
CROSS APPLY sys.dm_exec_sql_text (p.plan_handle) s
3. It is good, but sometimes bad. It is good because reusing query plans avoids the overhead of regenerating the query plan. But, sometimes, if the previously generated query plan is not a good fit for a new set of parameters, the query can turn out to be inefficient. If you google for "parameter sniffing" you will find information on this issue.
4. It is possible for adhoc queries to reuse plan (sometimes) - see a good discussion here: http://technet.microsoft.com/en-us/library/cc293623.aspx