Targeting/Attacking - That's fine. There are optimizations here, but don't worry about those yet.
2D Camera - No, that's not the way you do a camera. I'm sure your engine must have a camera class built in. If not, Slick2D has the option to translate. So before drawing your scene, you translate the scene by the 2D camera offset. Then draw your entities at their absolute positions. Don't modify your entity positions!
Interface - That works OK, but it's hard to maintain. You can checkout some GUI libraries that utilize Slick2D. Many of them use XML files to define the layout of your UI and are easily modifiable. But only switch methods if this is causing problems for you.
Path Finding - You seem to be confusing path finding with motion. They're not the same thing. You find the path, which will likely be "square to square", then you have your entities follow the path. If you want free motion, you can implement steering and have them steer between the nodes of the path you found. Check out A*, as that's a popular path finding algorithm.
Selecting - It would probably be best to have an event systemevent system for this (and your other GUI commands). But basically you can do what you're doing now, poll the mouse, find out what's under it. You can either do this constantly, or just when a mouse click happens. Either way, you only want to change the selection when the mouse is clicked. If there's nothing under the mouse, deselect all the survivors.
Picking stuff up - There are other ways to do this, but this is good enough for a first pass.
Animations - No, you make one function that has inputs for fire speed, reload rate, etc. That one function calculates the time required to fire a gun. Don't make multiple "unique" functions.
I can tell already that this answer will likely be followed up by even more questions. This question is already border line a discussion, so don't follow up with more questions. Keep doing research. It sounds like you're new enough that looking at open source projects will be far less useful to you than reading through questions and answers on a site like this. So do more research here. Use the "related" links on the right to browse through related questions and just soak in some information. You have a lot to learn, so take your time. When you have more questions, really think about the problem you're facing, try to solve it yourself first and if you don't solve it post one question at a time here. Good luck!