why the same url as the Route::get request?
Well, it's not the same. One is http://domain.com/orders the other one is http://domain.com/orders/create. One is meant to show all the orders and the other one is meant to show a form to create an order. Do they need to be separate? No. You could have the form and all the orders in the same view.
What relation does 'orders' have with 'orders' in the form, do they need to match?
No, your URL does not have to match what you have in a form. The 'orders' you see as a parameter in Route::get is meant to define how the URL should look like, that's it.
Does this means that the store method will be called everytime someone visits the 'orders' url?
No, the store method will only be triggered when someone makes a POST request to http://domain.com/orders. Who is going to do that? For example, the form (as long as you set the method to POST, read below).
Request::all(); // get all content from the form fields, correct?
Yes.
I'm not sure what this does, is this a method inherited from the Model class or this is the create method shown above???
That method is from the Model class. Now, if you couldn't see that ::create is not the method declared on the controller, I suggest you watch the series on OOP fundamentals.
redirect('orders');// not sure what this does???
This redirects the user back to http://domain.com/orders. The argument you see right there, is the URL where you want to send the user to. In your case, since you declared Route::get('orders', 'OrdersController@index');, the user will be redirected to the page were all the orders are shown. If you redirect the user to an URL that you haven't defined, like redirect('asdf') which would send the user to http://domain.com/asdf, Laravel will throw an exception.
post request, can someone explain this in detail?
POST is an HTTP verb or method. For example, when you type http://google.com in your address bar and hit enter, you are sending a GET request. Whenever you say Route::get() it means 'only respond to someone hitting this url, if the user made a GET request'. So, if you had a form with method="POST" (by default, the Form facade will create a POST form) and you submit the form to a route that only responds to GET, Laravel would throw an exception telling you there's not a route defined for that (or something similar).
index View
In that snippet, $orders equals Order::all(). Here's why:
$orders = Order::all();
return view('orders.index', compact('orders'));
You passed a variable to the view. Inside that view, $orders equals whatever you passed in as a second parameter to the view() helper function.
@foreach ($orders as $order)
<article>
<h2>{{ $order->item }}</h2>
<p> {{ $order->ingredients}}</p>
<p>{{ $order->email}}</p>
<p>{{ $order->created_at}}</p>
<p>{{ $order->updated_at}}</p>
</article>
@endforeach
Here, you are going over each order (because $orders is a collection with many order records) and call a property on it.
When you fetch a record from the table, Laravel (Eloquent specifically) will make the value for each column available as properties. So $order->email will return the value in the email column for that record.