A IllegalArgumentException é uma RuntimeException lançada pelo programador. IndexOutOfBoundsException também. Como o everton falou, NumberFormatException também.
É muito comum se criar filhas delas, com diversas exceções Unchecked, todas lançadas pelo programador. Não é muito incomum ver gente lançando diretamente a RuntimeException também.
É melhor não confundir.
Exceções lançadas pela VM são RuntimeExceptions ou Errors, e ocorrem por erros de programação, sem que alguém tenha escrito nenhum código com “throw” para lança-las.
Os casos mais comuns são:
- Fazer casts impossíveis:
String x = 10;
Integer y = (Integer)x; //Lança automaticamente uma ClassCastException
- Acessar índices inválidos de arrays primitivos:
int x[] = 10;
x[10] = 0; //ArrayIndexOutOfBoundsException
- Tentar acessar um objeto nulo:
String x = null;
x.split(10); //NullPointerException
- Tentar dividir por zero:
int a = 10;
int b = 10 - a;
int c = a / b; //ArithmeticException
Além dessas, a VM lança automaticamente erros. Eles terminam com “Error” e nunca devem ser lançados pelo programador, ou capturados por catch (exceto para um log). São situações irreversíveis. O mais comum é o OutOfMemoryError, mas um erro de programação pode gerar o StackOverflowError. Também já presenciei algumas vezes o ThreadDeath, mas pq um programador fazia uso incorreto do método stop(). Se você tentar iniciar a AWT num sistema sem monitor, você também pode obter um AWTError (embora versões mais modernas do Java lancem apenas uma HeadlessException).
Agora, a regra é: Se for uma exception da VM, sempre será RuntimeException.
Se for uma exception do programador, pode ser uma Runtime ou uma Exception verificada.