Почему не работает «скрыть» на не первых элементах?
При каждом добавлении нового элемента в #list-case вы назначаете обработчики клика всем существующим .img и .show, а не только свежесозданным. Если срабатывает два (или четыре, или шесть, или...) обработчика, которые выполняют toggleClass, то конечное состояние от начального отличаться не будет. Отсюда ваше кажущееся "не работает".

Не надо назначать никаких обработчиков при добавлении .case, делайте это один раз, используя делегирование:

$('#list-case')
  .on('click', '.img', function() {
    $(this).closest('.case').remove();
  })
  .on('click', '.show', function() {
    $(this).toggleClass('none').closest('.case').find('.case-bottom').toggleClass('invise');
  });
Самое простое это добавить к каждому контейнеру нумерацию и при клике на конкретный блок скрывать его по этой нумерации !