How do you determine what inputs you should use for a neural network?
Experimentation. Initially you use a priori knowledge and intuition to guess the features will be useful for classification or prediction or whatever it is your network is doing. Then you test the network and observe its error rate. Based on the results you make adjustments; add/discard features, regularize, add/discard layers, adjust the learning rate, and so on.
Are more inputs necessarily better?
No. You're trying to find the features that matter to what you're trying classify/predict and discard unrelated features. Processing input/features that don't matter to the computation just wastes CPU time.
Does it matter if inputs are linearly independent?
If inputs are linearly dependent then you are in effect introducing the same variable as multiple inputs. By doing so you've introduced a new problem for the network, finding the dependency so that the duplicated inputs are treated as a single input and a single new dimension in the data. For some dependencies, finding appropriate weights for the duplicate inputs is not possible.
Could one build a neural network that could determine its own inputs for an arbitrary problem and raw data set?
This is essentially what neural networks that deal with raw data only must do. The hidden layers tease features out of the raw data and those features are gradually refined by the feedback that occurs during training. This is an approach you might use if you have no idea how to proceed given some classification problem. But usually you have some idea what features are both useful and difficult for the network to compute for itself, and you provide those features as additional input.