@Fábio Henrique Borecki Bom dia. Não sei se a solução que passarei aqui é a melhor indicada. Também estou iniciando os estudos em Java e, portanto, pode não funcionar sempre ou dar outro tipo de problema futuro, mas até onde testei, funcionou.
1º Problema: Neste caso seria adicionar simplesmente um "sc.nextLine()" antes do "String nome", isso faria essa limpa da variável anterior e permitiria o valor seguinte ser ligo.
2º Problema: Outro problema que enfrentei logo nos primeiros dias com o Java, foi definir uma String X, e colocá-la como condição de um IF, eu fazia da mesma forma como você fez e sempre dava algum problema, até que passei a usar o "char op = sc.next().charAt(0)", a partir disso o problema foi resolvido.
Coloquei no código abaixo para melhor entendimento. Espero ter ajudado.
System.out.println("Digite o numero da conta\n");
int numero = sc.nextInt();
sc.nextLine(); // adicionei a presente linha para limpar as informações e evitar que a "String nome" seja pulada.
System.out.println("Digite o nome do titular da conta");
String nome = sc.nextLine();
System.out.printf("Você Deseja realizar um deposito inicial?\nDigite (S) para sim e (N) para não");
// String op = sc.nextLine();
char op = sc.next().charAt(0); // alterei o "String op" pelo "char op", colocando-o no IF abaixo com aspas simples na condição (op == 'S')
if (op == 'S') {
System.out.printf("Digite o Valor do deposito inicial");
int deposito = sc.nextInt();
sc.close();
}