Ext4 has a theoretical limit of 4 billion files, which is restricted by the size of inode number it uses to identify each file (ext4 uses 32-bit inode numbers). However, as John says, ext4 allocates inode tables statically, so the actual limit is set when the filesystem is created.
The df command shows you a count of free inodes on your filesystem:
$ df -i
Filesystem iused ifree %iused Mounted on
/dev/disk0s3 55253386 66810480 45% /
/dev/disk1s3 55258045 66805821 45% /Volumes/Clone
Ext4 also supports an unlimited number of sub-directories per directory, though it may default to a limit of 64,000. This is configurable — see the ext4 article at Kernel Newbies.
For more information, see The new ext4 filesystem: current status and future plans from the 2007 Linux Symposium.