Question1: Can I write a simple helloworld porlet and just deploy it on Tomcat or other ap server like JBoss but not on a portal server?
The portal server is required for deploying a portlet. You can find different portal server bundles like Liferay-Tomcat, where you have Liferay portal server extending the features of the underlying application server. Portlet Containers are meant to manage portlet components, so you definitely need Portlet Container.
Question2: Now I have a web appplication developed by struts , can I just deploy it on a portal server without change? Or I should change the web ap to a portlet and deploy it?
You have to turn you web application into a portlet application to register your portlets with the portal server.
Question3: Can portlet communicate another porlet in the same portlet server( inter-portlet communication)?
Yes. You can do that using sending/receiving events or by using public render parameters.
Question4 : If I want to receive contents that provoides by a portlet appliction on anther server , how can I communication with it ? Send httpRequest?
You should consider using WSRP (Web Services for Remote Portlets) for reusing content generated by remote portlets.