Sure there are differences if you are writing a new simulation entity. However, if you are only using an existing entity then it should look pretty much like a real robot.
There are several points to make here.
If you want to use Simulation Tutorial 2, you can try using the "Save Scene As..." option in the Simulator. It will create two files. One is a manifest that starts the appropriate services and the other is a config file that contains the full list of entities in the simulation. If you run the manifest, you will see that there is a differential drive service started.
However, if you want to modify the Simulation Tutorial 2 environment to add more objects or use a different simulated robot, then you don't want to save it from the Simulator. Instead you need to edit the C# code.
As you have already figured out, in order to access a simulated differential drive from another service you need to call CreateService in the simulation service. Search Simulation Tutorial 2 and you will see what I mean.
You don't have to create the services inside your simulation. It is possible to create them through the manifest by specifying the simulation entity that they correspond to. The approach in Simulation Tutorial 2, and in my Maze Simulator, is to create the services programmatically because it makes the manifests trivial -- just start the simulation and let it do the rest.
If you want to see an example of how to create services in a manifest, then have a look at the following code I put together to use the Maze Simulator in VPL:
If you open mazesim.manifest.xml you will see how it creates the services. Unfortunately, VPL removes all of the line terminators so you will have to "unravel" the code first. Of course, this approach results in TWO copies of each service -- one from the Maze Simulator and one from the manifest. I am updating the Maze Simulator so that you can turn off the service creation to make it more compatible with VPL.
So there are two options:
1. Write a simulated environment and create services. Then write another service and just treat the simulated robot like a real robot, i.e. just start the simulation in the manifest with a single service record.
2. Write a simulated environment, but don't create any services. Write another service and in the manifest start the simulation service and also start a simulated service for each of the different devices, drive, laser, bumpers, etc.
I hope this explains it a bit better. Maybe this should be in the book :-)