Olá Bruno, tudo bem?
Bom em relação às diferenças entre Procedures e Functions, aqui estão algumas que acho principais:
- Functions retornam valores ;
- Procedures podem ou não retornar um valor.
- Functions podem ser usadas em uma instrução SELECT;
- Procedures não podem ser usadas em uma instrução SELEC.
- Functions podem ter apenas parâmetros de entrada;
- Procedures podem ter parâmetros de entrada / saída.
- Functions podem ser chamadas de dentro de Procedures ;
- Procedures não podem ser chamados a partir de functions.
Já em relação ao uso de procedures e functions no dia a dia das empresas, é basicamente o que você falou, mas no meu ponto de vista a escolha também deve depender do que será necessário executar e como será utilizado esse procedimento, por exemplo, se você não vai precisar retornar nenhum valor então você usa a procedure, já que a function obrigatoriamente precisa retornar um valor, caso você precise utilizar em uma instrução SELECT o ideal é escolher a function, já que procedures não podem ser usadas.
As vantagens de usar procedures e function é que elas provem aumento de desempenho e segurança, também promovem reusabilidade e facilidade de manutenção, como por exemplo, esses procedimentos ficam armazenados no banco de dados, não é necessário sempre copiar um código quando precisar executar alguma operação, a instrução SQL já está pronta, o que precisa ser feito apenas é chamar o procedimento que executa o que você precisa. Isso pode ser muito utilizado, por exemplo, na geração de relatórios, já que muitas empresas precisam gerar relatórios diários, semanais, mensais...
Espero ter esclarecido a sua dúvida Bruno, qualquer coisa é só falar e bons estudos!