is it okay to draw something that is outside the boundaries of my screen? [...] would that harm the performance of my game?
It would harm the performance, yes. I don't know how bad the performance loss would be (ideally, the graphics card would discard every off-screen pixel, anyways), but there would definitely be a performance less that would get bigger the more you draw. This is especially true when drawing tilemaps, where you would be iterating over tiles that don't get drawn. Therefore it's best to sort out all stuff that isn't currently on-screen before rendering and only render stuff that's actually visible.
you said to change the position of all the objects, doesn't that requires a lot of work to change their position every time the character moves?
Well, firstly, you don't really change their positions. You only change their positions in your update code. In your render code, you don't change their positions, but substract the camera position from their current position (in a temporary, local variable or whatever). Basically, see the example of Mark Oates. Secondly, what do you mean by "a lot of work"? Do you mean "work" in terms of "CPU cost" or "work" in terms of "coding complexity"? If the first one, then no, it shouldn't be much of a problem to render all of your objects and apply the camera transformation to them once a frame (that's about 30 to 60 times a second, depending on your desired frame rate), at least when done right. If the second one, then no, something like that isn't hard to code. You really only need a single for loop and have to iterate over all your game objects.