Lets create a controller set for  objects we are going to call items

most componets are build around the idea of table or set of tables of
data and managing that data. so to make this sample component useful
instead of just hello world style I am going to assume that your
componet wants to have a list of  objects and we are going to call them
items

so we create a pural and a singual controller, this way even though we
are creating more files it makes the code cleaner and easier to
understand. The singualar is dealing with one record, like and edit
form, and the pural is dealing with the list and filtering views.
These can be merged to one file but we are going not going too.
Adding in sample helper  for our component, you can do a lot of menu style and ACL related things in the helper that you will use across different views
Creating the administrator models to pair up with our controllers

Again, we have two models one for sigual and one for pural usage. This
is a key difference because we are extending different base classes in
this case. the signular extends JModelAdmin, because this has features
built in for  unpublishing and publishing toggle buttons, getting the
form data from our Jforms xml files. The Pural has JModelList as a base
because it is designed for displaying admin lists.
adding in the Table file to tell our componet and joomla about our MYSQL table

Every single table you  create in your database needs to have a file to
tell the application about the table.

So in our case we are creating a file, that  tells our component about
our items  table.  We don't need to define  anything exept the name and
the primary key in this case it is very standard table with a primary
key called ID that is int, and auto incrementing. JTables are very
useful down the line and can do a lot of heavy lifting for you  esp. if
you have  advanced things you need to do to the table before  or on
save or   want to do validation before any  commits are stored to the
tables.
adding sql files

in your sql directory you will now fine the install and uninstall mysql
comments.

In this example I have DROP TABLE IF exists, and to uninstall the table
 on component uninstall some component develoepers  have a practice of
leaving in mysql tables after installs which can be helpful sometimes,
but it can also leave a bunch of unused tables I think when components
unistall so should the tables from the database if you want you can
remove those lines.
adding updates sql files

Starting in joomla 2.5 you can now include a list of update mysql
files, that will run when your component is updated. This can be very
useful for updating  your tables  after an install and you just need a
few minor DB changes be very careful here not to break others data.
Ok we have mysql table, a controller, a model and a jtable we are going to now need a JFORM xml file

Now I have mixed feelings about JForm. Sometimes it makes simple jobs
over complicated and sometimes to make  hard jobs easier.

It isn't going anywhere, and you can override the forms with plugins so
I am going to stick with it here for completeness and for standards
sake.

 You can spend a lot of time reading up on JFORM because basically all
you are doing is  trying to generate forms   for your fields with XML
files.
Adding List View

Now to make the singual and list views, fromt he Controllers and the
models we already created we need to add in our views. the views are
what the users actually see  so take care to make them neat and nice so
that user has a good time interacting with your component.  Now that
Joomla team has spent much time on the JUI, you can create mobile ready
advanced components without too much  in the UI department.  Here is
the list view
adding the basic form view

the form view here is  pretty simple I picked a few fields that i
thought would be useful to others and so what the different field types
do.  right now we should have a working CRUD enviroment for our simple
sample component for managing items