How to compose an HTTP GET request URL with key/value parameters
Side question: please explain the difference between const char* host and const char *host if there is one


There is no difference; n.b. the arduino IDE uses C++! If you don't know C or C++ you should learn that first.


  "what is the best way to compose the full URL without hard coding the whole thing?"


This is basically the same question as how do you manipulate, i.e. compose, composite, concatenate, C strings. c string functions

here is a quick example, without error checking, etc.:

const char* host = "http://somehost.com/dir/1";
char* app = "123";
char* user = "123456"
char* api_key = "XXXXXXXXXXXXX";

char urlout[255];

// we are going to start here
strcpy(urlout, host);
strcat(urlout, "/?appid=");
strcat(urlout, app);
strcat(urlout, "&amp;userid=");
strcat(urlout, user);
strcat(urlout, "&amp;key=");
strcat(urlout, api_key);

// urlout == "http://somehost.com/dir/1/?appid=123&amp;userid=123456&amp;key=XXXXXXXXXXXXX"