dbo is the schema (or owner in 2000-). Schemas contain objects, including tables. As such, you can't have a table without a containing schema just as you can't have a table without a containing database.
This is not a prefix. Think of schemas as containers. dbo.ThisTable indicates <container>.<object>. You can also have other, totally different objects called ThisTable in other schemas
The prefix is not part of the name, it is a qualifier to indicate the containing schema.
dbo is a special schema - it is is present in every database and, typically, it is the default schema for users. It stands for "database owner". If you do not explicitly specify a schema when you refer to an object, SQL Server will go to the default schema. This is perhaps why you sometimes see this schema and sometimes not. NOTE that it is typically considered bad practice not to explicitly state the schema when referring to an object, so whereas you are keen to not qualify all objects with the schema name, if I got hold of your code I would add the schema name in.