This seems not a hard project. I will tell you my idea about each step in your job description
1, To create a simple input box, we can generate a Form object in the Main method (defined in program) which is the entry point of the program
1.1 We don't add the Form before running, but define it dynamically, then add controls to the form dynamically.
1.2 Show the dialog in Modal mode.
2, Submit to web service, if the web service is something like ".asmx", ".svc", we may need to build client, if the web service is web api, some urls start with "http:" or "https:", then we just need to use HttpWebRequest or WebClient to post data to that url
3, If the service return XML format data, we use [login to view URL] or [login to view URL] namespace, if the web service return json format, may be we can use [login to view URL] library.
4, Similar to step#2 and step#3, use HttpWebRequest or Service client to submit request, use [login to view URL] or [login to view URL] to parse result.
5, It's easy, don't need to explain.
6, Parse from step#4, then use a ComboBox control or ListBox control to contains the items.
7, Read the local cache, it maybe a txt file, or a XML file or stored in a database, could you tell me
8, Download file, we can use Backgroundworker control, then in the Main Thread, we update the progress bar.
9, Just compare to the items of the list control (maybe ComboBox or ListBox), add new items.
<Cover letter doesn't allow input so many characters>
Contact me, let's talk!