There are three kinds of chord you can play high on the neck.
Barre chords: You mention these in your question, but I mention it for completeness.
%5/1.5/1.7/3.7/4.6/2.5/1
In this example you barre across the 5th fret, and use fingers 2,3,4 to form the rest of the chord shape.
Chords containing both high fretted notes, and open strings
%0/1.7/2.7/3.6/1.0/2.0/1
In this example you play open E, B, E strings, while fretting notes on the others, on the 6th and 7th frets. It can result in some full, complex chords.
Chords in which some strings are not played
%X/X.X/X.7/2.7/3.6/1.X/X
In this example, the E,A,E strings are not played, and a triad is played on the remaining three strings. Of course, if you finger a 6-note chord, you can strum wildly, but when you play a chord like this one, you need more precision. You can either suppress the unwanted strings with various muting techniques, or you can just make sure you don't pluck/pick those strings.
Most guitar parts more sophisticated than strum-the-chords, involve playing chords of fewer than 6 notes, most of the time.
There are lots of ways you can construct 2-3 note chords.
One way is to shift shapes you already know, up the neck. For example, a "D major shape"
%X/X.0/0.0/0.2/1.3/3.2/2
Don't play the open strings, and move this up 2 frets, it's an E. 1 more fret, it's an F. 2 more frets, it's a G:
%X/X.X/X.X/X.7/1.8/3.7/2
Try playing that shape, then the G chord you already know, to see how they sound harmonically alike.
This means that you could play chords for any song, using just the D major and D minor shapes, at various positions on the neck. Try it!
You can do this with all the shapes you know.
Another way is to imagine a barre shape for the chord you want to play, choose the strings you want to play, and make a simpler fingering that only frets those strings.
Yet another way is to get familiar with intervals. For any root note, you can work out (and, with experience, instinctively know) where the fifths and the thirds are, on the nearby strings. Then you can construct a chord out of any combination of those.
Or, you can simply learn the note name of every position on the fretboard, and the note names that make up every chord, and use that knowledge to construct chords. For example, C minor is made up of C, Eb, G. If you know where all of those are on a fretboard, you can make up the chord.
Different people prefer different ways of thinking. I prefer thinking in terms of intervals (F minor is "F, 3 semitones up from F, 7 semitones up from F"), whereas some people prefer thinking in terms of absolute notes ("F minor is F, Ab, C"). Find your own preference.
Finally, don't be afraid of just trying shapes to see how they sound. If it sounds good, it is good.