Em primeiro lugar, um JDK consiste em um Java Runtime Environment (JRE) e várias ferramentas que ajudam você a compilar e depurar o código Java. O JRE é independente e não contém ferramentas de compilação ou depuração. Então, se você não está em desenvolvimento e apenas quer rodar aplicações escritas em Java, então você pode simplesmente instalar o JRE.
O Oracle JDK é mantido pela Oracle (surpresa), enquanto o OpenJDK é uma implementação de código aberto com contribuições da comunidade Java aberta, bem como da Oracle. Tanto quanto sei, o processo de construção do Oracle JDK é construído a partir do código-fonte do OpenJDK. Assim, como o Oracle JDK obtém sua origem do OpenJDK, não há grande diferença técnica entre o Oracle JDK e o OpenJDK. Meu entendimento é que todo o desenvolvimento e correções de bugs acontecem no OpenJDK e depois são propagadas para o Oracle JDK.
Vou citar esta resposta aqui:
% bl0ck_qu0te%Houve casos em que as pessoas afirmam que tiveram problemas ao executar o OpenJDK e que foram resolvidas quando foram alternadas para o Oracle JDK ou vice-versa. Mas essas afirmações, geralmente, não podem ser verificadas. Considerando o fato de que o Oracle JDK obtém sua fonte do OpenJDK, essas afirmações sempre serão difíceis de provar.
Além disso, em uma nota não relacionada, você pode criar seu próprio JDK, desde que siga as especificações da linguagem Java. Muitas empresas (como o Twitter) têm seus próprios JDKs. Claro, existem certos processos (que atualmente não estou ciente) que você precisa seguir antes de fazer isso.