ExecCGI gives execution permissions at server level (not at files level like 777 for instance)
When a script is called and that script is executed by a defined cgi handler, the server verify that the directory containing the script have execute permissions so the script can be executed by the cgi handler, the ExecCGI option gives that permission.
About the other one, you shouldn't have problem if you add to <Directory "/opt/greenstone/cgi-bin"> the following:
Allow from all
Although (and someone please correct me if I'm wrong with this) you, as a user, don't need access directly to http://localhost/gdsl/cgi-bin
, I mean, going to that URL and recieving a 403 error doesn't mean that it's a problem since what it's actually required is that the scripts that runs under the cgi-handler have the right access, again, I'm not sure about this one, however, in case I'm wrong the Order allow,deny I put before should work