Here is a tip to immediately speed up the development of your Actions app - don't get confused by the terminology 🙂
Here are the things you need to actually understand so you don't waste your time going in circles.
Code you write which helps you add business logic to your Dialogflow app
2 REST API
The code you write which helps you integrate a Dialogflow agent into your existing app/channel
3 Actions SDK
Develop an Action app without using Dialogflow. You will specify something called an "Action Package", which is a JSON file which tells Google Assistant what kind of phrases are handled by the app. You have to build the mapping of the user phrase to an intent (i.e. an action that your app must perform) by using some kind of external NLU service.
4 Request-response cycle
The data being transferred in JSON format from your agent to your webhook, and back
5 Client library
Helper code which takes care of the usual plumbing so you can create Dialogflow integrations (2)
6 Fulfillment library
Helper code which takes care of the usual plumbing so you can create Dialogflow webhooks (1)
7 Actions on Google client library
Helper code which takes care of usual plumbing so you can write a webhook for a Google Assistant app. Yeah, not a very intuitive name 🙂
Types of "rich content" you can display in your Actions app. E.g. Basic Card, Carousel, Suggestion Chips etc.
Example: Basic Card
9 Helper intents
Helps your Actions app receive input from the user. E.g. get the date and time for an appointment. (If you tried to do this yourself, you need to write multiple intents, and learn how to manipulate contexts to handle these inputs. Helper intents allow you to combine these and get the information for you automatically)
10 Trigger the helper via JSON
In the documentation about helpers, you will actually see the following:
What are those tabs?
So here is how it works: you can either use the AoG client library (7) to create the helper intents, or you can also send the corresponding JSON from your webhook response (but you cannot use the AoG client library in that case) to trigger the same helper intent.
Why does this matter?
In case you want to write webhook code in a language of your own choice (and not use NodeJS or Java), you can do so and still write AoG apps. You only need to make sure you send the JSON in the correct format.
Dialogflow JSON vs Actions SDK JSON
OK, why do we need two tabs then? If you decided not to use Dialogflow for building the Assistant app and chose the Actions SDK (3) instead, you will be able to do so but your JSON must be sent from your webhook in a different format.