If I understood well, both are GET requests both I'm not sure when I should use one or the other.
As for (1): I usually set the GET route as follows: route/{name}/{variable}. For (2) I should set it up as follows?: route/?name={name}&variable={variable}
In the second one name and variable are query parameters and they are not mandatory for the route to work so the actual route is only domainexample.com/route. Query parameters are just means to carry some information along with your route, and in the first one those name and var makes up the route so if you don't pass the name and var in your first route your route won't work and you will get a 404 not found error.
This is the only beginner friendly way I could answer.
You can use query params when you are filtering the data
As a best practice, almost of developers are recommending following way. If you want to identify a resource, you should use Path Variable. But if you want to sort or filter items, then you should use query parameter.
@lukegalea16 yes, you can retrieve it from the request with $request->param;, $request->input('param'); or request('param');. If you only want to retrieve the value from the query string, you can use $request->query('param');.