Question: I'm working on a project where a program running on the mobile phone needs to communicate with a program running on the PC it's connected to. Ideally, I'd like to use USB, WiFi, whatever to communicate.

The two programs should be able to communicate things like battery life, text messages, etc... But I can work on that later, I just need to get them to talk.

What's the best way to do this?

Answer: 
Assuming you have a wifi connection, one way for your Windows Mobile program to communicate with your PC would be to use WCF on the .NET compact framework 3.5.

You'd create a new WCF application to run you your PC, and expose an interface exposing functions you want to call from your Windows Mobile Device. 

WCF on Windows Mobile requires Compact Framework 3.5 to be installed on your device.
You also need the "Windows Mobile power toys" to be able to generate compatible proxies to call from Windows mobile.

[Power Toys for .NET Compact Framework 3.5](http://www.microsoft.com/downloads/details.aspx?FamilyID=c8174c14-a27d-4148-bf01-86c2e0953eab&DisplayLang=en)

Calling the WCF service from your WM Device also requires you to manually set up the binding and endpoint to pass into your web service proxy (with desktop WCF this is done automatically by loading them from a config file). 

WCF on Windows Mobile currently only supports the basic http binding (which can be encrypted if you want), but this may be enough for your needs.
found this in 2015, so I don't think the answer is going to be relevant for the original asker, but for the record:
Proximity
<https://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh465205.aspx>