As suggested, you are using what is known as a "typed DataSet". That would have been generated from an existing database, not the other way around.
Using standard ADO.NET, you can create a data adapter as a broker between a database table and a DataTable in your application. You need to provide the SQL code and parameter definitions for that data adapter and all the data in the DataTable is accessed as an Object reference, because it needs to support any type of data.
Typed DataSets build on that standard ADO.NET base. The IDE tools will generate code that includes types that either inherit or wrap the standard types and add new members that is specific to your database, which is why it is generally generated from an existing database. You can make changes in the DataSet designer but that is generally modifications to the auto-generated types or additions, not building it from scratch.
With regards to the types, a standard DataSet has a Tables property that is a DataTableCollection and you can get a DataTable from it by providing a name as a String. A typed DataSet has a dedicated property for each DataTable and each of those DataTables is a dedicated type, based on the columns in the original database table. A standard DataTable has a Rows property that is a DataRowCollection. You can get a DataRow by indexing that collection and then you can use either index or column name to get data from a field as an Object reference. A typed DataTable can be indexed directly to get a typed DataRow and that DataRow has a dedicated property for each column that is already the correct type. For instance, instead of doing this with a standard DataSet:
string fullName = (string) myDataSet.Tables("Person").Rows(0)("FullName");
you would do this with a typed DataSet:
string fullName = myDataSet.Person(0).FullName;
You get full Intellisense for table and column names and everything is type-safe, hence the name "typed DataSet".
Instead of using data adapters that you build yourself, you use table adapters generated by the IDE. Generally speaking, you just need to call Fill to retrieve data and Update to save data. All the SQL code and parameter definitions are generated for you, in the form of a data adapter that is wrapped inside your table adapter. One nice feature is that you can use the same table adapter to execute full queries and also filtered queries. The default query, which is executed by calling Fill, is effective a
"SELECT *" against the specified table. In the DataSet designer, you can add a query to the table adapter and add a filter or whatever other logic you like, as long as the result set has the same schema as the default query. Let's say that you have a Product table with a SupplierId column. The Fill method would retrieve every Product record. You could add a query like so:
SELECT * FROM Product WHERE SupplierId = ?
and name the associated methods FillBySupplierId and GetDataBySupplierId. You can then call FillBySupplierId and provide an Id as an argument and get the filtered results in your typed DataTable.
This is just a basic primer. There's plenty more information out there if you search for "typed DataSets".