Bom dia!
Em programação orientada a objetos muito se fala tanto em instâncias de classes como em objetos.
A palavra "objeto" existe porque o conceito da Orientação a Objetos é representar no software as características e comportamentos relevantes dos objetos reais do domínio.
Instância e objeto são termos intercambiáveis. Instância é a coisa técnica que permite a existência de um objeto na memória. A palavra Objeto, por sua vez, pode ser usada num nível mais alto de abstração.
Uma instância de uma classe é um novo objeto criado dessa classe, com o operador new. Instanciar uma classe é criar um novo objeto do mesmo tipo dessa classe. Uma classe somente poderá ser utilizada após ser instanciada.
Então ao modelar um sistema de notas fiscais, as notas e seus itens são objetos; e ao codificar o sistema, classes serão declaradas para definir estes objetos, e para que estes objetos existam na memória serão criadas instâncias destas classes.
Em um exemplo mais prático:
Classe:
public class NotaFiscal{.....} // não é objeto nem instância, é a definição de um objeto.
Instância:
var notaFiscal = new NotaFiscal(); // "notaFiscal" referencia uma instância
Objeto:
notaFiscal.setNumero(1234); // a instância representa a Nota Fiscal 1234, que é um objeto de domínio e existe como objeto para além do código fonte.
Depois de os objetos serem persistidos as instâncias são removidas da memória e os objetos como os conhecemos no mundo real estarão seguros na base de dados até que precisemos lidar com eles novamente - e daí novamente vamos criar instâncias das suas classes para poder olhar para estes belos objetos e manipulá-los.