ICE is an object-oriented distributed middleware platform that provides features like RPC, a language-neutral specification language called Slice, language mappings, support for transports like TCP and UDP, services for server activation and firewall traversal, and integration with persistence and threading. Developing applications with ICE involves writing Slice definitions, generating code from Slice, implementing servers that activate objects, and writing clients that make calls to servers. The process is demonstrated through a sample counter service application.