An orphaned inode is a file that is “semi-deleted”: it has no more directory entry, but it's still open in some process, so the data is still present on the disk. When the last process that has this file open closes it, the file will be fully deleted and the orphaned inode will disappear.
An orphaned inode uses both an inode and the disk space to store the file, so both
df -i count it as used. Thus, if the disk is reported as full but
df shows some space left, this can't be related to orphaned inodes. Orphaned inodes are one of the reasons why the filesystem usage reported by
df and the total file size reported by
du can differ; see Why are there so many different ways to measure disk usage? for more details on this topic.
Many filesystems reserved a fixed number of inodes when the filesystem is created, meaning that you can have at most that many files on the filesystem. The number of inodes is a compromise between the space used by the inodes and the ability to create many files. If there is no more space on the filesystem, then you can't grow existing files or create new files (perhaps you can still create some empty files in existing directories, as long as they're only filling up partially-used blocks and not requiring a new block to be allocated). If there is no more free inode, you can grow existing files but you can't create a new file.
The kernel reports the same error to applications whether a filesystem is full due to a lack of data space or due to a lack of inodes. So you can get a “disk full” error even if there's some data space left, if the operation required a new inode and the inode table is full. Run
df -i to know how many inodes are used and how many are left.