The connection and interaction between hardware, software and the user. Users "talk to" the software. The software "talks to" the hardware and other software. Hardware "talks to" other hardware. All this is interfacing. It has to be designed, developed, tested and redesigned; and with each incarnation, a new specification is born that may become yet one more de facto or regulated standard.
Hardware interfaces are the plugs, sockets, cables and electrical signals traveling through them. Examples are USB, FireWire, Ethernet, ATA/IDE, SCSI and PCI.
Software interfaces (programming interfaces) are the languages, codes and messages that programs use to communicate with each other and to the hardware. Examples are the Windows, Mac and Linux operating systems, SMTP email, IP network protocols and the software drivers that activate the peripheral devices.
User interfaces are the keyboards, mice, commands and menus used for communication between you and the computer. Examples are the command lines in DOS and Unix, and the graphical interfaces in Windows, Mac and Linux.
Format & Function
Every interface implies a structure. Electrical signals are made up of voltage levels, frequencies and duration. The data passed from one device or program to another has a precise format (header, body, trailer, etc.).
Every interface implies a function. At the hardware level, electronic signals activate functions; data are read, written, transmitted, received, checked for error, etc. At the software level, instructions activate the hardware (access methods, data link protocols, etc.). At higher levels, the data transferred or transmitted may itself request functions to be performed (client/server, program to program, etc.).
Language & Programming
An interface is activated by programming language commands. The complexity of the functions and the design of the language determine how difficult it is to program.
User Interface, Protocol, API and ABI
The design of the interaction between the user and the computer is called a "user interface." The rules, formats and functions between components in a communications system or network are called "protocols." The language and message formats between routines within a program or between software components is called an "application programming interface" (API). The specification for an operating system working in a specific machine environment has been known as an "application binary interface" (ABI), but this term is not widely used.
All the above interactions are interfaces. Regardless of what they are called, they all create rules that must be precisely followed in a digital world.
A Whole Lot of Talking To
No matter what they're called, interfaces boil down to a format and language that defines the services one system is capable of delivering to another.