Hi Giles,
That's a lot of questions, I'll try to get all your questions answered. Feel free to follow up if you have more questions.
At a low level, OAuth flow involves
(a) generating an authorization url
(b) Navigating the user to the url and asking user to authorize it.
(c) Obtaining an authorization code from server once the user authorizes the access (This is the authorization code you see on the url)
(d) Exchanging the authorization code for an access token (for authorizing your API calls, short lived, typically expires in 1 hour) and optionally a refresh token (for obtaining a new access token once the old one expires, won't expire until the user explicitly revokes this token)
(e) Making calls with access token in OAuth2 Authorization header.
(f) Detecting when the access token expires (either track remaining lifetime of the token, or examine the errorcode thrown by the server)
(g) Use refresh token to get a new access token, repeat (e) and (f)
If you have just one customer, you can use
OAuthTokenGenerator.exe to do steps (a) to (d). If you have an application where users login interactively, you need to implement (a) to (d) as shown in the OAuth ASP.NET code example. The client library takes care of (e) to (g) provided you mention the configuration in app.config or you load them into AdWordsUser at runtime.
To answer your specific questions,
1. Yes, you are right in thinking that you can generate the configuration one-time using OAuthTokenGenerator.exe and use that with your Windows service.
2. No, it is used only for obtaining the access and refresh tokens.
3. Yes, it is used to refresh the access token automatically once it expires. Since your service is a Windows service, you will definitely need this token.
4. ClientId and ClientSecret won't expire. Only access token will expire.
5. Yes, you can.
6. Yes, you need to keep the project on the Google API Console in tact, since the access and refresh tokens are issued against the Google API Console.
Hope this helps. Let me know if you have more questions,
Cheers,
Anash P. Oommen,
AdWords API Advisor