How to create a URL with $_GET values by writing my own custom module?
If I understood your question correctly, you are mixing the URL arguments and query string.

You can have as many query string arguments as you want and you do not have to define them upfront. Drupal will not limit you. An example of query string is page?arg1=123&amp;arg2=456, just like what views module does for filters. This is what you need for your $_GET form.

What you define in the hook_menu are URL arguments - for example one/two/three. You can get them by using the arg() function, so arg(0) in the example above would return one, arg(1) would return two etc.



UPDATE


  So is the URL arguments in hook_menu not needed (i.e. page arguments)?


Yes, you don't need it in this case. You will solve everything by using query string (~question mark in the URL).


  Does 'page?arg1=123&amp;arg2=456' not count as an argument, or is that just one big argument (i.e. arg(0))?


That is only one argument. arg(0) would return just page. arg1 and arg2 are query string parameters.

Think of page argument as a part of the base URL for the page.
Query string is what goes after the question mark.

You should use filter_input() instead of simple $_GET as it is much more secure.

See also drupal_get_query_parameters().