I have several linux instances on EC2 and 1 windows for specialized processing.
QUESTION: What is the fastest, secure way to send data from linux to windows internally?
a http request? open a port, if so which one?
the final step is for the windows machine to send the finished process (which will be an image) to S3.
There are many ways to send data (files) from one machine to another. For example, you can run FTP server on Windows machine and send your files over FTP from Linux machine
Since you're accepting string data in Windows, the simplest way is to create a website hosted under IIS using the framework of your choice (ASP.NET, PHP, etc.)
Open port 80 in your windows security group to accept connections only from your linux boxes. This prevents others from connecting to your windows box.
If you want to encrypt the data, then you can either encrypt it yourself before sending and decrypt on the other end, or you can use install a SSL certificate and use https.
Generally for internal communication I'd setup some VPN tunnel between the machines - this way you solve the security problem once and forever - all your internal communications bind to VPN interfaces only, and ports that you use are not even publicly visible, the only visible port is the one you use for VPN itself. Just use VPN with encryption that would satisfy you, OpenVPN or any other.
Now, once security problem solved, to send data, you are free to choose the most convenient way for you - be it HTTP with some XMLs, JSON, plain text or PHP serialize() over TCP, or whatever else.