There are many ways ... perhaps not countless, 'cause we "can" count them, but ...
save(data.1, data.2, file = "data.Rdata")
This saves just two objects, named, within the rda file.
For the latter form, you were close when you gave the example of
save(list = ls(.GlobalEnv), file = "data.Rdata")
Note that ls(.GlobalEnv) returns a character vector, which is what the man page for save says it needs. That should trigger the realization that this vector can be derived from ls() or from anything else that creates a vector, including manually:
save(list=c("data.1", "data.2"), file = "data.Rdata")
This latter technique is very handy when saving variables programmatically, where you may choose to not hard-code variable names (or have a variable number of them).
When trying to figure this out, it might be informative to try the nested commands first before putting them within a save. For instance, c(data.1, data.2) just concatenates the data objects, which may be useful or not; regardless, though, save expects an object in the ... to be a symbol or object ... but a derived object like within c() won't work.
Similarly, ls(data.1) should have given you a reply along the lines of as.environment(pos): invalid 'pos' argument, indicating that your expection of the ls function is a bit amyss.