1) If there are always the same number of fields, as in the example in the question, then read them in and sum the number that equal 1. If we knew the components were always 0 or 1, as in the example in the question, we could optionally omit the ==1.
rowSums(read.table(text = nums, sep = ":") == 1) > 1
## [1] FALSE FALSE TRUE
2) If 1 cannot appear as part as part of a longer string, which is the case in the example in the question, then
nchar(gsub("[^1]", "", nums)) > 1
## [1] FALSE FALSE TRUE
3) If there are not the same number of fields in each component and 1 can appear as part of a larger field then preprocess the strings to remove fields not equal to 1 and then apply the above.
library(gsubfn)
tmp <- gsubfn("[^:]+", ~ +(x == 1), nums)
nchar(gsub("[^1]", "", tmp)) > 1
## [1] FALSE FALSE TRUE