Es exactamente lo que dijiste xD
Las que no son punteros, se destruyen automáticamente. Los punteros, al ser memoria dinámica, es algo que tiene que tener en cuenta el programador.
delete es para arreglos de 1 elemento.
delete[], para arrehlos de más de 1 elemento.
Si no me equivoco, puedes usar "delete" cuando reservaste memoria mediante "new ...[1]".