This is because your bounds checking is incomplete. You are checking if the mouse coordinates are within the bounds of the canvas then drawing them - that's good. The bad part is that when you draw the do you do so from the upper left hand corner of the circle. When you do this on the right or bottom edge the dot will be drawn over the edge.
To fix this just take into account the size of the dot when you determine if the it can be placed on the canvas. If your dot is 10 pixels you shouldn't place the dot unless it's within
getGlobalBounds() - dotSize.
Now as to your other problems...
What wrong Field am I calling?
In the following code the event is a mouse button press but you are also checking they key code from a keypress event. Since sf::Event is a union accessing anything other than the last member set (written to) results in undefined behavior.
if(event.type == sf::Event::MouseButtonPressed && event.key.code == sf::Mouse::Right)
You need to handle the key press event separately and maintain a flag that tracks if a certain key is pressed or not pressed so you can check it during other events.
You should actually be checking the event.mouseButton.button member instead of event.key.code. (read the documentation).
I know that using namespace std; is a bad practice, but for the time being it's not interfiering with anything so it's fine.
If you know that it's wrong why do you do it? I'l never understand why people take this poor approach to software development.
Also one last question is it possible to give a CircleShape pointer to the draw function in RenderWindow?
The draw function takes a reference not a pointer. Call it like so
window.draw(**it);