According to the man page for networksetup (
-createlocation location [populate]
Create a set with the user-defined-name name and optionally populate it with the default
So, the behavior you are seeing is expected. You don't need to use the
populate function; just add your services al la carte as needed.
That said, before you can modify a location, you have to switch to it first (make it active):
$ networksetup -listlocations <------ Lists all locations configured
$ networksetup -getcurrentlocation <------ Currently selected location
$ networksetup -switchlocation location <------ Sets current location
Using your two locations (Home and Work), switch to the location you want then add/modify/remove the service(s) in question
For example, to create a "TestLAN" service using the Bluetooth PAN hardware device on the Home network, use the following:
$ networksetup -switchlocation Home
$ networksetup -createnetworkservice TestLAN "Bluetooth PAN"
Additional commands you may wish to explore with
However, most importantly, you should explore the man page for more details.