Fala José,
Como o pessoal já disse, o erro é causado por que você está trabalhando com uma string, em vez de números. Traduzindo o seu código, o que está acontecendo é o seguinte:
1 - declare a variável total com valor 0
2 - para cada c contido em '1.23,2.4,3.123', faça alguma coisa.
Como '1.23,2.4,3.123' é uma string, então "cada c" significa: 1, ponto, 2, 3, vírgula, 2, ponto, 4, etc
3 - Na primeira volta do for, c é o caractere 1. Então vai haver a soma de total, que vale zero, com o resultado da conversão do caractere 1 em um inteiro.
4 - Na segunda volta do for, c é o caractere . (ponto). Quando tentar fazer a conversão do ponto para um inteiro, você recebe o ValueError.
No seu segundo algorítimo, você fez um split utilizando a vírgula como separador.
Isso obviamente funciona, mas não é a maneira mais adequada. Da mesma forma como uma string é uma cadeia de caracters, uma lista é uma cadeia de valores. Assim, você pode declarar a lista literalmente, por exemplo:
Veja que, utilizando a lista diretamente no for, o código é muito semelhante à sua primeira tentativa. A única diferença é que, em vez das aspas que delimitam strings, você utiliza colchetes para delimitar listas.
Agora, atente-se ao detalhe do int(c). Isso fará que 1.23 seja somado como 1, 2.4 seja somado como 2 e 3.123 seja somado como 3, resultando em 6 em vez de 6.753. Se o objetivo for fazer a soma dos decimais, então você precisa remover essa função. O algorítimo ficaria assim: