If you set the scaling matrix to SpriteBatch.Begin , then it will scale the sizes and positions of each individual sprite you draw with that SpriteBatch , until you name End .
SpriteBatch uses the client space, where zero is the upper left corner of the Viewport , and one element in this space is equivalent to one pixel in the viewport.
When you give the SpriteBatch transform, the sprites you draw will have the transform applied to them for you before they are drawn. Thus, you can (and should) use the same technique to translate your scene (for example, to focus it on your player).
For instance:
Your game is developed at 720p and you use SpriteBatch without conversion. You have a sprite centered in the lower right corner. Let's say its texture is (32, 32) pixels, and the origin sprite is (16, 16) (the origin is indicated in the texture space, so this is the center of the sprite). The sprite position is (1280, 720). The scale sprite is 1, which leads to its resulting size (32, 32). You will see the upper left quarter of the sprite in the lower right corner of the screen.
Now you are switching to a 1080p screen (1.5 times larger than 720p). If you do not add a scaling matrix to SpriteBatch , you can see the entire sprite with its two-thirds of the screen to the right and down.
But you want to enlarge your entire scene so that at 1080p it looks the same as at 720p. So you add the Matrix.CreateScale(1.5f, 1.5f, 1f) matrix Matrix.CreateScale(1.5f, 1.5f, 1f) (note using 1 for the Z axis, because it's 2D is not 3D) for your SpriteBatch.Begin and don't do anything.
Now your sprite scene will be increased 1.5 times more. Without any changes to the actual Draw call, your sprite will be drawn at (1920, 1080) (in the lower right corner of the screen), its size will be (48, 48) (1.5 times larger) and its origin will still be will be the center. You will see the upper left quadrant of the sprite in the lower right corner of the screen, as with 720p, and with the same relative size.