O "+" está sendo tratado como uma expressão regular.
$ title="C++ P"
$ awk -F: -v "title=$title" 'tolower($1) ~ tolower(title)' test.txt
C Programming in 21 Days
$ title="C.. P"
$ awk -F: -v "title=$title" 'tolower($1) ~ tolower(title)' test.txt
C++ Programming in 21 Days
C## Programming in 21 Days
Se estiver interessado apenas em corresponder ao início, você pode usar
$ awk -F: -v "title=$title" 'tolower(substr($0,0,length(title))) == tolower(title)' test.txt
Ou para combinar em qualquer lugar dentro da linha
$ title="C"
$ awk -F: -v "title=$title" 'index(tolower($0),tolower(title))' test.txt
C++ Programming in 21 Days
C## Programming in 21 Days
C Programming in 21 Days
$ title="C++ P"
$ awk -F: -v "title=$title" 'index(tolower($0),tolower(title))' test.txt
C++ Programming in 21 Days
$ title="C## P"
$ awk -F: -v "title=$title" 'index(tolower($0),tolower(title))' test.txt
C## Programming in 21 Days