A notação big O, o O-zão, foi criada para resolver o problema da comparação de algoritmos.
O problema da comparação
Como eu faço pra medir se o meu programa é mais rápido (ou mais eficiente em uso de memória) que o programa do meu colega? Podemos rodar os dois programas várias vezes, com entradas cada vz maiores, medir quanto tempo gasta (se a variável que queremos medir é o tempo de execução), e fazer uma média. Mas e se o compilador mudar? E se quisermos comparar programas independentemente do computador? E se quisermos medir a eficiência intrínseca do algoritmo?
Para isso foram inventadas as notações assintóticas: big-Omega, big-Theta e big-O: limite inferior, limite superior e os dois ao mesmo tempo. Essas notações assintóticas descrevem como os algoritmos se composrtam com entradas cada vez maiores, ou seja, respondem à pergunta quando n tende ao infinito, qual o limite inferior do tempo (demora, pelo menos, quanto tempo pra rodar): Ω(n) (omega de n). Da mesma forma, "demora no máximo quanto tempo pra rodar": Θ(n) (theta de n). Por fim, "na média demora quanto?", ou "qual o limite superior e inferior?": O(n).
Qual a aplicação prática disso?
Saber disso te ajuda a entender porque um método que você usou é pior ou melhor que outro. Te ajuda a comparar duas ferramentas. O simples fato de ter estudado como determinar a complexidade de um algoritmo pode te dar a intuição de que "talvez essa não seja a melhor forma de fazer isso 🤔".
Muita gente acha inútil estudar algumas matérias como essa na faculdade, mas são essas matérias que te dão a base para as abstrações que são necessárias no trabalho. E se você não ficou convencido, dou o útlimo algumento: esse tipo de questão cai muito em entrevistas (questões de Estrutura de Dados e Análise de Algoritmos caem muito, no geral). E se os recrutadores esperam que gente saiba é porque algo de importante deve ter.