Is it possible to have a key that's used for encryption and signing without any subkey at all?
This question doesn't make any sense. Relax--the problem is with the terminology that we use, not with you.
Originally in PGP 2.6, back in the early 90s, you had just one keypair and it was used for both encryption and signing. The ability to have additional keypairs presented some engineering challenges. Ultimately, it was decided that the additonal keypairs would be called "subkeys", despite the fact there's nothing "sub" about them. Likewise, what you call your "key" isn't really a key at all--the terminology is a holdover from the days when a key really was a key. Nowadays, a key is really a
collection of keys, along with some metadata for user identifiers, signatures, etc.
E.g., my "key" has four keypairs on it: 5B8709EB, D0C6AAE4, 71E177DB and 8DB02BBB3.
What GnuPG calls your "public key" is really the oldest signing key in the collection. E.g., since 5B8709EB was created first, GnuPG calls the entire set of keys and metadata the "5B8709EB key".
So, "is it possible to have a key that's used for encryption and signing without any subkey at all?" The answer here is no, because
all keypairs on a key are subkeys. Even if there's only one of them.
If I have 50 subkeys, how do I know which is used for signing and which is used for encryption.
This is another meaningless question. The most accurate answer is "... and why do you care?" If a subkey exists, that means the key owner approves of you using it. If the owner didn't, the owner would have revoked it. You never need to know which is used for signing and/or encryption. GnuPG could randomly choose between them and still be in accordance with the strict letter of RFC4880. As of this writing, GnuPG's policy is to use the largest key available for the task. That's been GnuPG's policy since the 1.0 release. However, there is absolutely no guarantee it will always be this way.
Not every subkey is capable of every task. Enigmail will not tell you key capabilities (for now--there's a UI enhancement in the works to fix this!), so you'll have to "gpg --edit-key my-key-ID" to find out. To the right of each subkey row you'll see a "usage:" field. An S means this subkey is capable of signing; a C means it is capable of certifying (which really only matters to OpenSSH users); and an E means it is capable of encrypting.
I respectfully differ with Shane on the subject of >1kbit signatures doing more harm than good. 1kbit is far too short for even medium-term security. 2kbit is the current recommendation.